19

是否可以在 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])
4

2 回答 2

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

您可以将该.in_()方法与 Columns 或 Instrumented 属性一起使用。两者都有效。

在 SQLAlchemy 的第一个教程中提到了这里。

于 2009-05-20T11:32:30.903 回答
7

.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()
于 2014-12-05T05:27:37.610 回答