几种SQLAlchemy过滤函数的用法

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

#equals sql

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

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

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

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

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

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

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

或者能够将另外一个查询的结果集做为in的范围 spa

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

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

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

6.空记录查找 sqlalchemy

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

7.不为空记录查找 io

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

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

#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查询须要后台数据库支持。

相关文章
相关标签/搜索