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

相關文章
相關標籤/搜索