Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membetulkan Ralat Penggantian Parameter SQLite dalam Python Apabila Menyoal Pangkalan Data?

Bagaimana untuk Membetulkan Ralat Penggantian Parameter SQLite dalam Python Apabila Menyoal Pangkalan Data?

Barbara Streisand
Barbara Streisandasal
2024-10-19 15:25:02374semak imbas

How to Fix SQLite Parameter Substitution Error in Python When Querying a Database?

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!

Kenyataan:
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