Поддерживается ли оператор IN в «языке выражений SQL», используемом в SQLAlchemy? - PullRequest
13 голосов
/ 20 мая 2009

Можно ли выразить запрос, подобный приведенному ниже, на «языке выражений SQL», используемом в SQLAlchemy?

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 ]

22 голосов
/ 20 мая 2009
select([foo], foo.c.bar.in_([1, 2, 3]))

Вы можете использовать метод .in_() со столбцами или с инструментальными атрибутами. Оба работают.

Здесь упоминается в первом руководстве по SQLAlchemy.

5 голосов
/ 05 декабря 2014

Оператор .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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...