Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Pernyataan INSERT SQLite Saya Gagal dengan \'Bilangan Pengikatan Salah\' untuk Rentetan Panjang?
Bilangan Pengikatan Salah
Apabila cuba memasukkan rentetan ke dalam pangkalan data SQLite menggunakan kod di bawah, ralat berlaku menunjukkan nombor yang salah daripada pengikatan:
def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] cursor.execute('INSERT INTO images VALUES(?)', (img)) cnt+= 1 connection.commit() connection.close()
Mesej ralat muncul apabila rentetan yang hendak dimasukkan ialah 74 aksara panjang.
Akar Isu
Kod cuba menghantar urutan item kepada kaedah execute() sebagai nilai ikatan. Walau bagaimanapun, parameter nilai bind memerlukan tupel dan kod tersebut mengabaikan untuk memberikan koma yang diperlukan untuk mencipta tupel.
cursor.execute('INSERT INTO images VALUES(?)', (img)) # Missing comma
Pembetulan
Untuk menyelesaikan masalah isu, tambahkan koma pada penghujung parameter nilai bind untuk mencipta a tuple:
cursor.execute('INSERT INTO images VALUES(?)', (img,))
Sebagai alternatif, anda boleh menggunakan literal senarai, yang juga diiktiraf sebagai urutan yang sah:
cursor.execute('INSERT INTO images VALUES(?)', [img])
Dengan salah satu pembetulan, kod akan memasukkan laluan imej dengan betul ke dalam pangkalan data tanpa mencetuskan mesej ralat tentang bilangan pengikatan yang salah.
Atas ialah kandungan terperinci Mengapa Pernyataan INSERT SQLite Saya Gagal dengan \'Bilangan Pengikatan Salah\' untuk Rentetan Panjang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!