SQLAlchemy的“SQL表达式语言”支持IN运算符吗?

20 投票
2 回答
14464 浏览
提问于 2025-04-15 11:43

在SQLAlchemy中,有没有办法用“SQL表达式语言”来写下面这样的查询?

SELECT * FROM foo WHERE foo.bar IN (1,2,3)

我想避免直接用文本写WHERE条件。有没有什么方法可以像我下面的例子那样,或者用其他不直接写文本的方式来表达?

select([foo], in(foo.c.bar, [1, 2, 3]))
select([foo]).in(foo.c.bar, [1, 2, 3])

2 个回答

9

现在,.in_() 操作符属于 ColumnOperators 类,具体的说明可以在这个链接找到:http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOperators.in_

下面是一个使用示例:

ids_to_select = ["1", "2", "3"]
query(Model).filter(Model.id.in_(ids_to_select)).all()
32
select([foo], foo.c.bar.in_([1, 2, 3]))

你可以使用 .in_() 这个方法来处理列(Columns)或者带有监控属性(Instrumented attributes)的对象。这两种方式都可以。

在 SQLAlchemy 的第一个教程中,这里有提到

撰写回答