Saya mencoba melakukan kueri ini di sqlalchemy
SELECT id, name FROM user WHERE id IN (123, 456)
Saya ingin mengikat daftar [123, 456]
pada waktu eksekusi.
python
sqlalchemy
wonzbak
sumber
sumber
Dengan asumsi Anda menggunakan gaya deklaratif (yaitu kelas ORM), itu cukup mudah:
db_session
adalah sesi basis data Anda di sini, sedangkanUser
kelas ORM dengan__tablename__
sama dengan"users"
.sumber
~
(~User.id.in_([123,456])
) ataunot_
darisqlalchemy.sql.expression
(not_(User.id.in_([123,456]))
).Cara alternatif adalah menggunakan mode SQL mentah dengan SQLAlchemy, saya menggunakan SQLAlchemy 0.9.8, python 2.7, MySQL 5.X, dan MySQL-Python sebagai konektor, dalam hal ini, diperlukan sebuah tuple. Kode saya tercantum di bawah ini:
Semoga semuanya berhasil untuk Anda.
sumber
Dengan API ekspresi, yang berdasarkan pada komentar adalah apa yang ditanyakan oleh pertanyaan ini, Anda dapat menggunakan
in_
metode kolom yang relevan.Ke kueri
menggunakan
Ini mengasumsikan bahwa
user_table
danconn
telah didefinisikan secara tepat.sumber
Hanya ingin berbagi solusi saya menggunakan sqlalchemy dan panda di python 3. Mungkin, orang akan merasa berguna.
sumber
Hanya tambahan jawaban di atas.
Jika Anda ingin menjalankan SQL dengan pernyataan "IN" Anda bisa melakukan ini:
Dua poin:
EDIT Perhatikan bahwa jika panjang daftar adalah satu atau nol, ini akan menimbulkan kesalahan!
sumber
args = [(tuple(ids_list),)]
, periksa kembali.(item, )
dan itu tidak benar dalam SQL