繁体   English   中英

SQLAlchemy 按列表字典过滤

[英]SQLAlchemy filter by dict of lists

尝试在flask_sqlalchemy 中进行查询。 我想使用列表字典和使用 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM