Ralat SQLite3: Kiraan Nilai Bind Tidak Padan
Apabila memasukkan nilai ke dalam pangkalan data SQLite3 menggunakan kaedah cursor.execute(), adalah penting untuk pastikan bilangan nilai ikatan yang disediakan sepadan dengan nombor yang dinyatakan dalam parameter pernyataan SQL. Jika tidak, anda mungkin menghadapi ralat yang serupa dengan "Bilangan pengikatan yang tidak betul yang dibekalkan."
Pertimbangkan coretan kod berikut:
def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] print(array[cnt]) cursor.execute('INSERT INTO images VALUES(?)', (img)) cnt+= 1 connection.commit() connection.close()
Apabila cuba memasukkan rentetan panjang 74, kod ini membuang ralat yang disebutkan di atas. Sebabnya ialah kaedah cursor.execute() menjangkakan jujukan nilai bind, manakala (img) hanyalah ungkapan.
Untuk membetulkannya, kita perlu menukar (img) menjadi tuple atau senarai dengan menambah koma. Berikut ialah kod yang diperbetulkan:
def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] print(array[cnt]) cursor.execute('INSERT INTO images VALUES(?)', (img,)) # Add a comma cnt+= 1 connection.commit() connection.close()
Sebagai alternatif, kita boleh menggunakan literal senarai:
cursor.execute('INSERT INTO images VALUES(?)', [img])
Atas ialah kandungan terperinci Mengapakah SQLite3 Melemparkan Ralat \'Kiraan Nilai Ikatan Tidak Padan\' Semasa Memasukkan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!