Ответ 1
select([foo], foo.c.bar.in_([1, 2, 3]))
Вы можете использовать метод .in_()
с помощью столбцов или атрибутов Instrumented. Оба работают.
Это упоминается здесь в первом учебнике SQLAlchemy.
Можно ли выразить запрос, подобный приведенному ниже, в "языке выражений 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_()
с помощью столбцов или атрибутов Instrumented. Оба работают.
Это упоминается здесь в первом учебнике SQLAlchemy.
Оператор .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()