Как вставить данные в нужный столбец в sqlite3? - PullRequest
0 голосов
/ 26 апреля 2020
import sqlite3
conn=sqlite3.connect('Stores.db')
c=conn.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS checkit
            (
            number integer,
            even integer,
            odd integer          
            )""")

conn.commit()
conn.close()
n=int(input("Input any integer"))

if n%2==0:
    conn=sqlite3.connect('Stores.db')
    c=conn.cursor()
    c.execute("INSERT INTO checkit VALUES(:a,:b,:c)",{
                'a':n,
                'b':n
                })

    conn.commit()
    conn.close()

else:
    conn = sqlite3.connect('Stores.db')
    c = conn.cursor()
    c.execute("INSERT INTO checkit VALUES(:a,:b,:c)", {
        'a': n,
        'c': n
   })

    conn.commit()
    conn.close()

Это мой код. Я пытался сохранить число в столбце «число», четное число в столбце «четное» и нечетное число в столбце «нечетное» таблицы «checkit» базы данных «Srores.db». Но я получаю ошибку sqlite3.ProgrammingError: You did not supply a value for binding 3. при вводе четного числа и ошибку sqlite3.ProgrammingError: You did not supply a value for binding 2. при вводе нечетного числа. Что мне делать?

1 Ответ

0 голосов
/ 27 апреля 2020

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

Измените SQL, чтобы принимать только заполненные столбцы

c.execute("INSERT INTO checkit (number, even) VALUES(:a,:b)",{
            'a':n,
            'b':n
            })

Или укажите значение для «пропущенного» значения

c.execute("INSERT INTO checkit (number, even, odd) VALUES(:a,:b,:c)",{
            'a':n,
            'b':n,
            'c':0
            })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...