Существует ли поддержка IN-operator в “Языке выражений SQL”, используемом в SQLAlchemy?

StackOverflow https://stackoverflow.com/questions/887388

  •  23-08-2019
  •  | 
  •  

Вопрос

Можно ли выразить запрос, подобный приведенному ниже, на "Языке выражений 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])
Это было полезно?

Решение

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

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

Это упомянуто здесь о первом руководстве по SQLAlchemy.

Другие советы

Оператор .in_() теперь находится в Операторы столбцов класс, документированный @ 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()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top