Я пытаюсь сделать этот запрос в sqlalchemy
SELECT id, name FROM user WHERE id IN (123, 456)
Я хотел бы связать список [123, 456]
во время выполнения.
python
sqlalchemy
wonzbak
источник
источник
Предполагая, что вы используете декларативный стиль (то есть классы ORM), это довольно просто:
db_session
ваша сессия базы данных здесь, аUser
класс ORM с__tablename__
равным"users"
.источник
~
(~User.id.in_([123,456])
) илиnot_
изsqlalchemy.sql.expression
(not_(User.id.in_([123,456]))
).Альтернативный способ - использовать режим исходного SQL с SQLAlchemy, я использую SQLAlchemy 0.9.8, python 2.7, MySQL 5.X и MySQL-Python в качестве соединителя, в этом случае необходим кортеж. Мой код указан ниже:
Надеюсь, у вас все работает.
источник
С помощью API выражений, основанного на комментариях, о чем спрашивает этот вопрос, вы можете использовать
in_
метод соответствующего столбца.Запросить
использование
Это предполагает, что
user_table
иconn
было определено соответствующим образом.источник
Просто хотел поделиться своим решением, используя sqlalchemy и pandas в python 3. Возможно, кто-то посчитает его полезным.
источник
Просто дополнение к ответам выше.
Если вы хотите выполнить SQL с оператором «IN», вы можете сделать это:
Два момента:
РЕДАКТИРОВАТЬ Обратите внимание, что если длина списка равна единице или нулю, это вызовет ошибку!
источник
args = [(tuple(ids_list),)]
, пожалуйста, проверьте дважды.(item, )
и это неправильно в SQL