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()はこう言う時に便利だよと言う使い方を知っている方がいれば、コメントで教えてもらえると嬉しいです。