7
5

More than 3 years have passed since last update.

SQLAlchemy filter()とfilter_by()の違い

Last updated at Posted at 2020-11-02

PythonのO/R Mapperの1つであるSQLAlchemyでDB検索する際にfilter()とfilter_by()の2つの関数があるので違いを説明します。

公式ドキュメントを見れば明白でした。
filter_by(), filter()
結論から言うと、fileter_by()の方がコードが短くなる利点があるようです。

filter():{モデル}.{変数名}でテーブルのカラムの値を検索条件に追加可能
filter_by(): モデルなしで、{変数名}だけでカラムの値を検索条件に追加可能

コードで見るとわかりやすいので明記すると

# filter()を使う場合の記述例
session.query(MyClass).\
    filter(MyClass.name == 'some name', MyClass.id > 5)

# filter_by()を使う場合の記述例
session.query(MyClass).\
    filter_by(name = 'some name', id > 5)

個人的にはfileter_byの方が短く記述できるので、便利かと思いました。

ただ、チームでの開発時やlinterを使う場合、undefined ~ とエラーが出る可能性があるので、その場合はfiler()を使って記述する方が良さそうです。

他にも、filter()はこう言う時に便利だよと言う使い方を知っている方がいれば、コメントで教えてもらえると嬉しいです。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5