所以我有一个元组列表,例如 [('Alex', 20), ('Steve', 50)]
现在我需要在 Users 表上触发一个选择查询来获取匹配的记录。
我这样试过:-
users = [('Alex', 20), ('Steve', 50)]
names = [r[0] for r in users]
ages = [r[1] for r in users]
query = self.session.query(Users).filter(
and_(Users.name.in_(names),
Users.age.in_(ages)))
我想要 Alex
用户年龄 20
和 Steve
用户年龄 50
的记录,但是这个查询还会给我 Alex
年龄 50
的用户。
所以这个查询并没有真正解决。需要一些帮助来解决这个问题。
最佳答案
要仅获取姓名和年龄与您的 users
列表匹配的用户,您必须将 name
和 age
过滤器与 AND
子句并将它们连接到 OR
子句中。
例如。像这样:
user_filters = [and_(Users.name == name, Users.age == age)
for name, age in users]
self.session.query(Users).filter(or_(*user_filters))
关于python - sqlalchemy 查询 : select using list of tuples,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32584301/