SQLAlchemy:检查给定值是否在列表中
问题描述:
在 PostgreSQL 中,使用 IN
运算符检查字段是否在给定列表中:
In PostgreSQL, checking whether a field is in a given list is done using the IN
operator:
SELECT * FROM stars WHERE star_type IN ('Nova', 'Planet');
IN
SQL 查询的 SQLAlchemy 等价物是什么?
What is the SQLAlchemy equivalent for an IN
SQL query?
db_session.query(Star).filter(Star.star_type in ('Nova', 'Planet'))
查询返回空.
db_session.query(Star).\
filter(or_(
Star.star_type == 'Nova',
Star.star_type == 'Planet'
))
这个查询返回了正确的结果,但不优雅且难以扩展.
This query returns the right result, but it is not elegant and hard to expand.
答
你可以这样做:
db_session.query(Star).filter(Star.star_type.in_(['Nova', 'Planet']))