Saya mencoba memasukkan beberapa baris data sekaligus ke dalam tabel di pythong menggunakan sqlite3 dan ini adalah kode yang saya gunakan:

import sqlite3
import numpy as np
connection = sqlite3.connect("""HR_info.db""")
cursor = connection.cursor()

cursor.execute('''CREATE TABLE IF NOT EXISTS flu_jabs(staff_number integer PRIMARY KEY, flu_jab 
text)''')
def insert(entitiy):
    cursor.execute('''INSERT INTO flu_jab(staff_number,flu_jab) VALUES(?,?)''', entitiy)
x1 = np.zeros([1,2])
x2 = []
xs = []
for i in range(30):
    #print('has staff id ',results[i][0],' recived a flue shot? (Y/N): ')
    #x.append(input())
    xs = 'Y '#input('0/1')
    x1[0][0] = i
    x1[0][1] = 0
    insert(x1[0][0],x1[0][1])
print(x1)

Namun apa pun yang saya masukkan ke dalam argumen Insert() saya mendapatkan ProgrammingError:

ProgrammingError: Incorrect number of bindings supplied. The current statement uses 2, and there are 1 supplied.

Atau TypeError:

TypeError: insert() takes 1 positional argument but 2 were given

Saya benar-benar tidak mengerti metode apa yang harus saya gunakan atau jika ada cara yang lebih sederhana dalam memasukkan beberapa baris data ke dalam tabel dalam SQL. Semua contoh yang saya lihat online tentang INSERT adalah satu baris, jika ada yang bisa mengarahkan saya ke contoh beberapa baris sekaligus, itu akan sama bergunanya

1
Sebastien Bienfait 30 Maret 2020, 02:39

1 menjawab

Jawaban Terbaik

Kesalahan

TypeError: insert() takes 1 positional argument but 2 were given

Terjadi karena Anda memanggil fungsi Anda dengan 2 argumen sedangkan itu didefinisikan sebagai fungsi yang hanya membutuhkan satu argumen. Dalam kasus Anda, Anda harus menyebutnya sebagai

insert((x1[0][0],x1[0][1]))

Yaitu menempatkan dua argumen ini dalam sebuah Tuple.

Juga, Anda memiliki kesalahan ketik. Anda membuat tabel DB "flu_jabs" (jamak) tetapi Anda mencoba memasukkan ke dalam "flu_jab" (tunggal).

1
szrg 29 Maret 2020, 23:59