Isu Penggantian Parameter SQLite
Apabila menggunakan SQLite3 dengan Python 2.5, isu biasa timbul apabila cuba mengulangi senarai dan mendapatkan data daripada pangkalan data. Menggunakan "?" yang dicadangkan parameter sebagai langkah berjaga-jaga untuk suntikan SQL sering mengakibatkan ralat berkenaan bilangan pengikatan.
Setelah disiasat, ternyata ralat itu berpunca daripada penciptaan awal jadual pangkalan data. Pernyataan penciptaan, seperti:
<code class="sql">CREATE TABLE Equipment (id INTEGER PRIMARY KEY, name TEXT, price INTEGER, weight REAL, info TEXT, ammo_cap INTEGER, availability_west TEXT, availability_east TEXT);</code>
mendaftarkan lapan pengikatan, walaupun hanya satu parameter digunakan semasa pertanyaan.
Untuk menyelesaikan isu ini, ubah suai kod untuk menggunakan urutan sebagai parameter kedua kepada kaedah Cursor.execute():
<code class="python">self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])</code>
Pengubahsuaian ini memastikan urutan dibekalkan kepada kaedah, menyelesaikan kekeliruan mengenai bilangan pengikatan.
Merujuk dokumentasi Objek Kursor SQLite3 boleh memberikan panduan lanjut tentang topik ini.
Atas ialah kandungan terperinci Adakah Penggantian Parameter SQLite Menyebabkan Ralat Mengikat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!