SQLAlchemy通过列表的dict进行过滤



尝试在flask_sqlalchemy中进行查询。我想使用列表的dict进行筛选,并使用ORM而不是查询字符串。仍然是SQLAlchemy的新手,所以任何帮助都将不胜感激。

我知道我能做到:

filter = {
'name': 'apple'
, 'age': 14
}
Items.query.filter(**filter).all()

翻译过来就是:

SELECT * FROM items WHERE name = 'apple' AND age = 14;

但我想要:

filter = {
'name': ['apple', 'pear']
, 'age': [14, 15, 21]
}

未来:

SELECT * FROM items WHERE name IN ('apple', 'pear') AND age IN (14, 15, 21);

这似乎奏效了:

filter = {
'name': ['apple', 'pear']
, 'age': [14, 15, 21]
}    
items = Item.query
for field in query:
items = items.filter(getattr(Item, field).in_(query[field]))
items = items.all()

最新更新