几种SQLAlchemy过滤函数的用法

SQLAlchemy中session.query方法的过滤函数有很多种用法,这里所谓的过滤函数其实就是实现了SQL中条件子查询。下面分别已几个列子为例:
1.相等比较使用 ‘==’

#equals

session.query(User).filter(User.name=='ed')

2.不相等比较使用 ‘!=’

#not equals
session.query(User).filter(User.name!='ed')

3.模糊查找使用 ‘like(‘% %’)’

#Like
session.query(User).filter(User.name.like('%ed%'))

4. 包含查找使用关键字in_

#In
session.query(User).filter(User.name.in_(['ed',  'wendy',  'jack']))

或者可以将另一个查询的结果集作为in的范围

#In sub list
session.query(User).filter(User.name.in_(session.query(User).filter(User.name.like('%ed%'))))

5. 不包含查找,在in操作前面加上’~'符号

#Not in
session.query(User).filter(~User.name.in_(['ed',  'wendy',  'jack']))

6.空记录查找

#Is null
session.query(User).filter(User.name==None)

7.不为空记录查找

#Is no null
session.query(User).filter(User.name!=None)

8.与操作(AND),使用函数and_

#And
from sqlalchemy import and_
session.query(User).filter(and_(User.name  ==  'ed',  User.fullname  == 'Ed  Jones'))

或者可以使用多个filter完成与操作:

session.query(User).filter(User.name=='ed').filter(User.fullname=='Ed Jone')

9.或操作OR,使用函数or_

#Or
from sqlalchemy import or_
session.query(User).filter(or_(User.name  ==  'ed',  User.name  == 'wendy'))

10.匹配查找match

#Match
session.query(User).filter(User.name.match('ed'))

注意这里的match查询需要后台数据库支持。

你可能感兴趣的:(几种SQLAlchemy过滤函数的用法)