Python通过变量(sqlite3.OperationalError)插入数据时出错

时间:2019-06-17 07:25:51

标签: python database sqlite

只希望用户能够将新类别的名称插入类别表。但是,存在语法错误。

该表具有两列:id和category_name。 id是自动递增的,我只想能够插入category_name并让ID自动生成。如果我从(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 个答案:

答案 0 :(得分:1)

您的SQL中有一个逗号结尾,这是无效的SQL语法。另外,execute的第二个参数需要是一个集合类型的对象,当前您只是传递一个字符串。只需更改:

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

收件人:

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