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

通过变量插入数据时出现Python错误(sqlite3.OPERROR),python,database,sqlite,Python,Database,Sqlite,只希望用户能够在categories表中插入新类别的名称。但是,有一个语法错误 该表有两列:id和category\u name。id是自动递增的,我只想能够插入category_名称并让id自动生成。如果我从(category\u name)中删除括号,错误消息将从附近的“更改为附近的“category\u name”。我只见过一次有人在一个表中只插入一个值,可能在这种情况下语法不同。 我希望这是显而易见的:) 导入sqlite3 database=sqlite3.connect('db/qu

只希望用户能够在categories表中插入新类别的名称。但是,有一个语法错误

该表有两列:id和category\u name。id是自动递增的,我只想能够插入category_名称并让id自动生成。如果我从
(category\u name)
中删除括号,错误消息将从
附近的“
更改为
附近的“category\u name”
。我只见过一次有人在一个表中只插入一个值,可能在这种情况下语法不同。 我希望这是显而易见的:)

导入sqlite3 database=sqlite3.connect('db/quick\u database.db') cursor=database.cursor() 类别\用户输入=输入(“请输入数据”) 执行(“插入到类别(类别名称)值(?,)”, (类别\用户输入) database.commit()
回溯(最近一次呼叫最后一次):
文件“H:/quick数据库项目(17-06)/quick/testfile.py”,第7行,在
execute(“插入到类别(类别名称)值(?,),(类别用户输入))
sqlite3.error:near“:语法错误

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

cursor.execute(“插入类别(类别名称)值(?,)”,(类别用户输入))
致:


@eyllanesc不工作,相同的错误尝试此
光标。执行(“插入类别(类别名称,)值(?,)”,(类别用户输入,)
@Kushan\u Gunasekerano抱歉,还是相同的错误:(不,这不是解决方案,也许我也应该解释一下。按照你说的做会产生一个错误:sqlite3.ProgrammingError:提供的绑定数量不正确。
后面有一个逗号,因为我希望它是一个元组,idk为什么要诚实,但它是这样工作的。没有逗号,它会解释变量(例如“test”)作为不起作用的(t,e,s,t)元组。(我认为)很好,所以我们已经克服了第一个错误。现在让我们来处理这个问题。
category\u userinput
中包含了什么?您只是想一次添加一个类别吗?不管用户输入什么。让我们说“test”是的,一次一个。你不希望它是元组,元组是python的东西,而不是sql。你一直说“思考”,你调试过自己的代码来检查吗?如果你只是打印出category_userinput的值,你会得到什么,元组还是字符串?对不起,我想我用错了词(不是“元组”)。category_userinput是字符串。
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
cursor.execute("INSERT INTO categories (category_name) VALUES (?)", [category_userinput])