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查詢須要後臺數據庫支持。