[英]SQLAlchemy - How can i filter data with kwargs? (And inside or condition)
I have conditions list that contains dictionaries such as:我有包含字典的条件列表,例如:
conditions = [
{"language_id": 1, "writer_level_id": 3},
{"language_id": 2, "writer_level_id": 2},
{"language_id": 2, "writer_level_id": 3},
{"language_id": 1, "writer_level_id": 1},
]
I'm trying to build a query such as:我正在尝试构建一个查询,例如:
queries = []
for i in conditions:
queries.append(
(
RelUserWriterLevel.language_id == i["language_id"],
RelUserWriterLevel.writer_level_id == i["writer_level_id"],
)
)
data = data.filter(or_(*queries))
It doesn't work because I send tuple in this case.它不起作用,因为在这种情况下我发送元组。 But I want to build an SQL like;但我想构建一个类似的 SQL;
SELECT * FROM user WHERE (language_id = .. and writer_level_id = ..) OR (...);
So I don't know how to build AND case inside OR filtering when I need to filter with kwargs .因此,当我需要使用kwargs过滤时,我不知道如何在 OR 过滤中构建 AND 案例。
Topics I've researched:我研究过的主题:
In second topic, the solution works for only one case.在第二个主题中,该解决方案仅适用于一种情况。 However, in my problem I need to use it like queries = [Xy == 'a' AND Xz == 'a', ...]
但是,在我的问题中,我需要像queries = [Xy == 'a' AND Xz == 'a', ...]
And then use it like filter(or_(*queries))
然后像filter(or_(*queries))
一样使用它
I appreciate all your efforts.我感谢你所有的努力。
If anyone wonders how to solve this issue;如果有人想知道如何解决这个问题;
queries = (and_(RelUserWriterLevel.language_id==i['language_id'], RelUserWriterLevel.writer_level_id==i['writer_level_id']) for i in conditions)
data = data.filter(or_(*queries))
The detailed explanation is here : How to get rows which match a list of 3-tuples conditions with SQLAlchemy详细说明在这里: How to get rows which match a list of 3-tuples conditions with SQLAlchemy
I've solved like this!我是这样解决的!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.