次のようなモデルがあるとします。
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
hometown = db.Column(db.String(140))
university = db.Column(db.String(140))
ニューヨークからユーザーのリストを取得するには、次のクエリを実行します。
User.query.filter_by(hometown='New York').all()
USC に行くユーザーのリストを取得するには、次のクエリを実行します。
User.query.filter_by(university='USC').all()
そして、ニューヨークから USC に行くユーザーのリストを取得するには、次のクエリを実行します。
User.query.filter_by(hometown='New York').filter_by(university='USC').all()
ここで、変数の値に基づいてこれらのクエリを動的に生成したいと思います。
たとえば、私の変数は次のようになります。
{'hometown': 'New York'}
またはこのように:
{'university': 'USC'}
...またはこのように:
[{'hometown': 'New York'}, {'university': 'USC'}]
入力として辞書 (または辞書のリスト) を受け取り、正しい sqlalchemy クエリを動的に構築する関数を作成するのを手伝ってくれませんか?
キーワードに変数を使用しようとすると、次のエラーが発生します。
key = 'university'
User.query.filter_by(key='USC').all()
InvalidRequestError: Entity '<class 'User'>' has no property 'key'
次に、複数の filter_by 式を動的に連鎖させる方法がわかりません。
明示的に filter_by 式を呼び出すことはできますが、変数に基づいて複数を連結するにはどうすればよいでしょうか?
これがより理にかなっていることを願っています。
ありがとう!