Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Pernyataan INSERT SQLite Saya Gagal dengan \'Bilangan Pengikatan Salah\' untuk Rentetan Panjang?

Mengapa Pernyataan INSERT SQLite Saya Gagal dengan \'Bilangan Pengikatan Salah\' untuk Rentetan Panjang?

Linda Hamilton
Linda Hamiltonasal
2024-11-30 10:23:15794semak imbas

Why Does My SQLite INSERT Statement Fail with

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!

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