пытается вставить несколько строк данных, используя sqlite3 (ошибка типа против ошибки программирования) - PullRequest
1 голос
/ 30 марта 2020

я пытаюсь вставить несколько строк данных одновременно в таблицу в pythong, используя sqlite3, и это код, который я использую:

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)

однако, что бы я ни указывал в аргументе Insert (), я получить либо ProgrammingError:

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

, либо TypeError:

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

Я действительно не понимаю, какой метод я должен использовать, или есть намного более простой способ установки нескольких строк данные в таблицу в SQL. Все примеры, которые я видел в Интернете об INSERT, были однорядными, и если бы кто-нибудь мог указать мне на пример примера из нескольких строк, это было бы так же полезно

1 Ответ

1 голос
/ 30 марта 2020

Ошибка

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

происходит потому, что вы вызываете свою функцию с двумя аргументами, тогда как она определена как функция, которая принимает только один аргумент. В вашем случае вы должны назвать его как

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

Ie и поместить эти два аргумента в кортеж.

Также у вас есть опечатка. Вы создаете таблицу БД "flu_jabs" (множественное число), но пытаетесь вставить ее в "flu_jab" (единственное число).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...