Estou tentando fazer esta consulta no sqlalchemy
SELECT id, name FROM user WHERE id IN (123, 456)
Eu gostaria de vincular a lista [123, 456]
no momento da execução.
python
sqlalchemy
wonzbak
fonte
fonte
Supondo que você use o estilo declarativo (ou seja, classes ORM), é muito fácil:
db_session
é a sua sessão de banco de dados aqui, enquantoUser
é a classe ORM com__tablename__
igual a"users"
.fonte
~
(~User.id.in_([123,456])
) ounot_
desqlalchemy.sql.expression
(not_(User.id.in_([123,456]))
).Uma maneira alternativa é usar o modo SQL bruto com SQLAlchemy, eu uso SQLAlchemy 0.9.8, python 2.7, MySQL 5.X e MySQL-Python como conector; nesse caso, é necessária uma tupla. Meu código listado abaixo:
Espero que tudo funcione para você.
fonte
Com a expressão API, que com base nos comentários é o que esta pergunta está solicitando, você pode usar o
in_
método da coluna relevante.Para consulta
usar
Isso pressupõe isso
user_table
econn
foi definido adequadamente.fonte
Só queria compartilhar minha solução usando sqlalchemy e pandas no python 3. Talvez alguém ache útil.
fonte
Apenas uma adição às respostas acima.
Se você deseja executar um SQL com uma instrução "IN", faça o seguinte:
Dois pontos:
EDITAR Cuidado que se o comprimento da lista for um ou zero, isso causará um erro!
fonte
args = [(tuple(ids_list),)]
, por favor, verifique.(item, )
e é incorreto no SQL