假设我有一个这样的模型:
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()
要获取去南加州大学的用户列表,这是我的查询:
User.query.filter_by(university='USC').all()
要获取来自纽约的用户列表以及前往南加州大学的用户列表,这是我的查询:
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 表达式,但是如何根据一个变量将几个链接在一起?
希望这更有意义。
谢谢!