SQLAlchemyでANDやOR条件を指定する方法

2019年4月25日木曜日

Python SQLAlchemy

t f B! P L

SQLAlchemyでANDやOR条件を指定する方法

この記事では、SQLAlchemyのfilter関数で、ANDやORで条件を複数指定する方法について紹介します。

SQLAlchemyでANDやOR条件を指定する方法

AND条件の指定

まずは、SQLAlchemyでAND条件を指定する方法を紹介します。
AND条件は、下記の3つの書き方ができます。結果としては同じになるため、好きな使ってください。

  • filter関数を繋げてAND条件を複数指定する書き方
for user in session.query(User).\
  filter(User.name == '山田').\
  filter(User.age >= 20)

メソッドチェーンでfilter()関数を繋げて書くと、AND条件指定のSQLになります。

  • カンマ区切りでAND条件を複数指定する書き方
session.query(User).filter(User.name == '山田', User.age >= 20)

filter()関数にカンマ区切りで条件を複数指定すると、AND条件指定のSQLになります。

  • and_ モジュールを使用してAND条件を複数指定する書き方
from sqlalchemy import and_
query.filter(and_(User.name == 'ed', User.fullname == 'Ed Jones'))

AND条件でこの書き方をすることは、あまりないかも…

OR条件の指定

続いて、SQLAlchemyでOR条件を指定する方法を紹介します。OR条件の指定は、or_モジュールを用います。
orはPythonの予約語なので、末尾に_(アンダーバー)が付いているのに気をつけてください。

from sqlalchemy import or_
query.filter(or_(User.name == '山田', User.name == '鈴木'))

さいごに

今回は、SQLAlchemyのfilter関数で、ANDやOR条件を指定する方法について紹介してきました。時間が空くと忘れてしまいがちですが、この記事を参考に思い出して貰えたら幸いです。

スポンサーリンク

QooQ