Ich versuche, diese Abfrage in sqlalchemy durchzuführen
SELECT id, name FROM user WHERE id IN (123, 456)
Ich möchte die Liste [123, 456]
zur Ausführungszeit binden .
python
sqlalchemy
Wonzbak
quelle
quelle
Angenommen, Sie verwenden den deklarativen Stil (dh ORM-Klassen), ist dies ziemlich einfach:
db_session
ist Ihre Datenbanksitzung hier, währendUser
die ORM-Klasse__tablename__
gleich ist"users"
.quelle
~
(~User.id.in_([123,456])
) odernot_
fromsqlalchemy.sql.expression
(not_(User.id.in_([123,456]))
).Eine alternative Möglichkeit ist die Verwendung des Raw-SQL-Modus mit SQLAlchemy. Ich verwende SQLAlchemy 0.9.8, Python 2.7, MySQL 5.X und MySQL-Python als Connector. In diesem Fall wird ein Tupel benötigt. Mein Code unten aufgeführt:
Hoffe alles funktioniert für dich.
quelle
Mit der Ausdrucks-API, nach der diese Frage basierend auf den Kommentaren fragt, können Sie die
in_
Methode der entsprechenden Spalte verwenden.Abfragen
verwenden
Dies setzt dies voraus
user_table
undconn
wurde entsprechend definiert.quelle
Ich wollte nur meine Lösung mit SQLalchemie und Pandas in Python 3 teilen. Vielleicht würde man sie nützlich finden.
quelle
Nur eine Ergänzung zu den obigen Antworten.
Wenn Sie eine SQL mit einer "IN" -Anweisung ausführen möchten, können Sie dies tun:
Zwei Punkte:
BEARBEITEN Beachten Sie, dass bei einer Länge der Liste von eins oder null ein Fehler auftritt!
quelle
args = [(tuple(ids_list),)]
, bitte überprüfen Sie es noch einmal.(item, )