Mengapa MySQLdb Saya Tidak PILIH ... DI MANA ... DI ... Pertanyaan Mengembalikan Keputusan?

Susan Sarandon
Lepaskan: 2024-11-01 13:06:30
asal
838 orang telah melayarinya

Why Doesn't My MySQLdb SELECT ... WHERE ... IN ... Query Return Results?

Melaksanakan "SELECT ... WHERE ... IN ..." Menggunakan MySQLdb

Apabila melaksanakan pertanyaan SQL dengan klausa IN menggunakan MySQLdb, adalah penting untuk memberi perhatian kepada bagaimana parameter pertanyaan dibina.

Masalah

Seorang pengguna menghadapi masalah semasa cuba memilih fooids di mana bar berada dalam ('A','C') menggunakan Python dan MySQLdb. Walaupun pertanyaan yang sama berfungsi daripada baris arahan mysql, ia tidak mengembalikan baris dalam Python.

Punca Punca

Isu timbul kerana MySQLdb menukar argumen berparameter [' A','C'] to ("'A'","'C'"), yang mengakibatkan terlalu banyak petikan di sekitar nilai dalam klausa IN.

Penyelesaian

Untuk melaksanakan pertanyaan dengan betul, parameter pertanyaan mesti dibina secara manual. Kod Python berikut menunjukkan cara untuk mencapai ini:

Python 3:

<code class="python">args = ['A', 'C']
sql = 'SELECT fooid FROM foo WHERE bar IN (%s)'
in_p = ', '.join(list(map(lambda x: '%s', args)))
sql = sql % in_p
cursor.execute(sql, args)</code>
Salin selepas log masuk

Python 2:

<code class="python">args = ['A', 'C']
sql = 'SELECT fooid FROM foo WHERE bar IN (%s)'
in_p = ', '.join(map(lambda x: '%s', args))
sql = sql % in_p
cursor.execute(sql, args)</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa MySQLdb Saya Tidak PILIH ... DI MANA ... DI ... Pertanyaan Mengembalikan Keputusan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!