Melaksanakan "SELECT ... WHERE ... IN ..." menggunakan MySQLdb
Apabila cuba melaksanakan pertanyaan SELECT dengan DALAM klausa menggunakan MySQLdb, pengguna mungkin menghadapi masalah di mana tiada baris dikembalikan walaupun pertanyaan berfungsi seperti yang diharapkan daripada baris arahan mysql. Ini boleh berlaku disebabkan petikan yang tidak perlu diletakkan di sekitar nilai IN.
Untuk mengatasi isu ini, pembinaan manual parameter pertanyaan diperlukan. Dalam kedua-dua Python 2 dan 3, rentetan ruang letak yang dipisahkan koma (%s) boleh dijana daripada senarai nilai IN. Pertanyaan kemudiannya boleh diformat menggunakan rentetan ini dan dilaksanakan dengan senarai nilai asal.
Untuk 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>
Untuk 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>
Dengan mengikuti pendekatan ini, pertanyaan SQL akan diformatkan dengan betul dengan nilai IN yang diingini, menyelesaikan isu di mana tiada baris dikembalikan sebelum ini.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan SELECT dengan Klausa IN Menggunakan MySQLdb?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!