SQLAlchemy中session.query方法的过滤函数有不少种用法,这里所谓的过滤函数其实就是实现了SQL中条件子查询。下面分别已几个列子为例:
1.相等比较使用 ‘==’ python
#equals sql
session.query(User).filter(User.name=='ed')
2.不相等比较使用 ‘!=’ 数据库
session.query(User).filter(User.name!='ed')
3.模糊查找使用 ‘like(‘% %’)’ session
session.query(User).filter(User.name.like('%ed%'))
4. 包含查找使用关键字in_ 函数
session.query(User).filter(User.name.in_(['ed', 'wendy', 'jack']))
或者能够将另外一个查询的结果集做为in的范围 spa
session.query(User).filter(User.name.in_(session.query(User).filter(User.name.like('%ed%'))))
5. 不包含查找,在in操做前面加上’~'符号 code
session.query(User).filter(~User.name.in_(['ed', 'wendy', 'jack']))
6.空记录查找 sqlalchemy
session.query(User).filter(User.name==None)
7.不为空记录查找 io
session.query(User).filter(User.name!=None)
8.与操做(AND),使用函数and_ class
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_
from sqlalchemy import or_ session.query(User).filter(or_(User.name == 'ed', User.name == 'wendy'))
10.匹配查找match
session.query(User).filter(User.name.match('ed'))
注意这里的match查询须要后台数据库支持。