在SQLAlchemy中使用的“SQL表达式语言”中是否支持IN运算符?

时间:2009-05-20 11:27:27

标签: python sqlalchemy

是否可以在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 个答案:

答案 0 :(得分:22)

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

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

关于SQLAlchemy的第一个教程的

It is mentioned here

答案 1 :(得分:5)

.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()