J'essaie de faire cette requête dans sqlalchemy
SELECT id, name FROM user WHERE id IN (123, 456)
Je voudrais lier la liste [123, 456]
au moment de l'exécution.
python
sqlalchemy
wonzbak
la source
la source
En supposant que vous utilisez le style déclaratif (c'est-à-dire les classes ORM), c'est assez simple:
db_session
est votre session de base de données ici, tandis queUser
la classe ORM est__tablename__
égale à"users"
.la source
~
(~User.id.in_([123,456])
) ounot_
depuissqlalchemy.sql.expression
(not_(User.id.in_([123,456]))
).Une autre manière est d'utiliser le mode SQL brut avec SQLAlchemy, j'utilise SQLAlchemy 0.9.8, python 2.7, MySQL 5.X et MySQL-Python comme connecteur, dans ce cas, un tuple est nécessaire. Mon code ci-dessous:
J'espère que tout fonctionne pour vous.
la source
Avec l'expression API, qui, sur la base des commentaires, est ce que cette question demande, vous pouvez utiliser la
in_
méthode de la colonne appropriée.Pour interroger
utilisation
Cela suppose que
user_table
etconn
ont été définis de manière appropriée.la source
Je voulais juste partager ma solution en utilisant sqlalchemy et pandas en python 3. Peut-être, on le trouverait utile.
la source
Juste un ajout aux réponses ci-dessus.
Si vous souhaitez exécuter un SQL avec une instruction "IN", vous pouvez le faire:
Deux points:
EDIT Attention, si la longueur de la liste est de un ou zéro, cela provoquera une erreur!
la source
args = [(tuple(ids_list),)]
, veuillez vérifier.(item, )
et elle est incorrecte dans SQL