Estoy tratando de hacer esta consulta en sqlalchemy
SELECT id, name FROM user WHERE id IN (123, 456)
Me gustaría vincular la lista [123, 456]
en el momento de la ejecución.
python
sqlalchemy
wonzbak
fuente
fuente
Suponiendo que use el estilo declarativo (es decir, clases ORM), es bastante fácil:
db_session
es su sesión de base de datos aquí, mientras queUser
es la clase ORM con__tablename__
igual a"users"
.fuente
~
(~User.id.in_([123,456])
) onot_
fromsqlalchemy.sql.expression
(not_(User.id.in_([123,456]))
).Una forma alternativa es usar el modo SQL sin procesar con SQLAlchemy, yo uso SQLAlchemy 0.9.8, python 2.7, MySQL 5.X y MySQL-Python como conector, en este caso, se necesita una tupla. Mi código se enumera a continuación:
Espero que todo funcione para ti.
fuente
Con la expresión API, que según los comentarios es lo que esta pregunta está pidiendo, puede usar el
in_
método de la columna correspondiente.Para consultar
utilizar
Esto supone eso
user_table
yconn
ha sido definido apropiadamente.fuente
Solo quería compartir mi solución usando sqlalchemy y pandas en python 3. Quizás, sería útil.
fuente
Solo una adición a las respuestas anteriores.
Si desea ejecutar un SQL con una declaración "IN", puede hacer esto:
Dos puntos:
EDITAR ¡ Cuidado que si la longitud de la lista es uno o cero, esto generará un error!
fuente
args = [(tuple(ids_list),)]
, por favor revisa dos veces .(item, )
y es incorrecta en SQL