Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

sqlalchemyのfilter関数でANDやORな条件を指定する

sqlalchemyにおける検索条件について

実際のところ

for user in session.query(User).\
  filter(User.name=='ed').\
  filter(User.fullname=='Ed Jones'):
print(user)

上の例は、以下のように書くこともできます。

session.filter(User.name == 'ed', User.fullname == 'Ed Jones')

ORの場合は、"or_"ライブラリ(?)をインポートした上で以下のようにします。*1

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

*1:import sqlalchemyしてれば全部読んでるような気もしますが