Ошибка Python при вставке данных через переменную (sqlite3.OperationalError) - PullRequest
0 голосов
/ 17 июня 2019

Просто хотите, чтобы пользователь мог вставить имя для новой категории в таблицу категорий. Но есть синтаксическая ошибка.

Таблица имеет два столбца: идентификатор и имя категории. Идентификатор является автоинкрементным, я хочу просто иметь возможность вставить имя_категории и позволить идентификатору генерироваться автоматически. Если я уберу скобки с (category_name), сообщение об ошибке изменится с near ")" на near "category_name". Я видел только один случай, когда кто-то вставлял в таблицу только одно значение, возможно, синтаксис в этом случае другой. Я надеюсь, что это что-то очевидное:)

import sqlite3
database = sqlite3.connect('db/quiz_database.db')
cursor = database.cursor()

category_userinput = input("please input data")
cursor.execute("INSERT INTO categories (category_name) VALUES (?,)",
               (category_userinput))
database.commit() 
Traceback (most recent call last):
  File "H:/quiz database project(17-06)/The Quiz/testfile.py", line 7, in <module>
    cursor.execute("INSERT INTO categories (category_name) VALUES (?,)", (category_userinput))
sqlite3.OperationalError: near ")": syntax error

1 Ответ

1 голос
/ 17 июня 2019

В вашем SQL есть запятая, которая является недопустимым синтаксисом SQL.Кроме того, второй параметр execute должен быть объектом типа коллекции, в настоящее время вы просто передаете строку.Просто измените:

cursor.execute("INSERT INTO categories (category_name) VALUES (?,)", (category_userinput))

на:

cursor.execute("INSERT INTO categories (category_name) VALUES (?)", [category_userinput])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...