Betulkan untuk Ralat Penggantian Parameter SQLite dalam Python
Apabila menanyakan secara berulang pangkalan data untuk nilai tertentu berdasarkan senarai, perangkap biasa timbul dalam penggunaan "?" kaedah penggantian parameter. Walaupun bertujuan untuk menghalang suntikan SQL, kaedah ini boleh membawa kepada ralat jika tidak digunakan dengan betul.
Dalam senario yang diterangkan, ralat berikut berlaku: "sqlite3.ProgrammingError: Bilangan pengikatan yang tidak betul dibekalkan." Ini menunjukkan bahawa bilangan parameter yang dibekalkan kepada kaedah execute() tidak sepadan dengan nombor yang dijangkakan.
Ralat berpunca daripada penciptaan awal jadual pangkalan data, yang mempunyai 8 lajur dan oleh itu memerlukan 8 parameter dalam sisipan atau pertanyaan kemas kini yang sepadan. Walau bagaimanapun, apabila menggunakan "?" kaedah penggantian, parameter kedua hendaklah urutan yang mengandungi hanya nilai yang akan diikat, bukan satu rentetan.
Untuk menyelesaikan isu ini, kaedah execute() hendaklah dipanggil seperti berikut:
<code class="python">self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])</code>
Dengan menghantar senarai dengan satu elemen ([item]) sebagai parameter kedua, bilangan pengikatan yang betul dibekalkan dan ralat dielakkan. Selain itu, menggunakan borang yang dicadangkan selaras dengan pengesyoran yang digariskan dalam rujukan perpustakaan Python untuk Objek Kursor sqlite3.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat Penggantian Parameter SQLite dalam Python Apabila Menyoal Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!