使用sqlalchemy进行多列条件查询

9 投票
1 回答
5325 浏览
提问于 2025-04-18 18:07

我想用sqlalchemy来执行这个查询。

SELECT name,
       age,
       favorite_color,
       favorite_food
FROM kindergarten_classroom
WHERE (favorite_color,
       favorite_food) IN (('lavender','lentil soup'),('black','carrot juice'));

我只想要喜欢(薰衣草和扁豆汤)或者(黑色和胡萝卜汁)的孩子。此外,这可能会有一大堆喜欢的颜色和食物(可能超过1万种),所以我想要分批处理这些。

这个问题有点相似,但并没有完全解决我的需求:Sqlalchemy in clause

1 个回答

20

你想要使用 tuple_ 这个构造方法:

session.query(...).filter(
    tuple_(favorite_color, favorite_food).in_(
        [('lavender', 'lentil soup'), ('black', 'carrot juice')]
    )
)

撰写回答