所以我有一个像[('Alex', 20), ('Steve', 50)]
现在我需要在Users表上触发一个select查询以获取匹配的记录。
我尝试过: -
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
的{{1}}用户的记录,但此查询还会向我50
用户提供年龄Alex
。
所以这个查询并没有真正解决。需要一些帮助来搞清楚这个问题。
答案 0 :(得分:2)
要仅获取名称和年龄与您的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))