pythonのORMであるSQLAlchemyを利用していると、filter関数とfilter_by関数が存在する。
今回はこれらの違いはについて調べてみた。
公式ドキュメントを読んでみると、どうやら条件を絞る時に、カラムの名前を使用する場合、filterだとモデル.カラム名で指定しないといけないが、filter_byだとカラム名のみで良いということらしい。
コードにすると
# filter()を使う場合
db_session.query(cls).\
filter(cls.name=="apple")
# filter_by()を使う場合
db_session.query(cls).\
filter_by(name = 'apple')
こんな感じでほとんど同じ効果だが、個人的に使う分にはfilter_by関数の方がコード量が少なくなるし、便利かなと感じた。
コメント