sqlite3.OperationalError: 附近的“,”:语法错误

2 投票
2 回答
18721 浏览
提问于 2025-04-18 01:23

更新 1:
另一行代码可以正常运行(谢谢大家的帮助!)。现在我尝试运行以下代码,但这也不行,我在第13行遇到了错误:sqlite3.OperationalError: near ",": 语法错误。

代码如下:

cur.execute("CREATE TABLE Progress(Id INTEGER PRIMARY, Username STRING, Topic1 STRING, Topic2 STRING, Topic3 STRING, Topic4 STRING, 1Result STRING, 2Result STRING, 3Result STRING, 4Result STRING, TResut STRING, TCorrect INTEGER, TWrong INTEGER, TAttempted INTEGER)")
cur.exectue("INSERT INTO Progress VALUES(1, 'Admin', 'Algebra', 'Number', 'Shape, Space and Measures', 'Handling Data', '100%', '100%', '100%', '100%', '100%', '10', '0', '10')")

我创建了一个SQL表,如下所示,现在想往表里输入一些数据,但我一直收到以下错误:sqlite3.OperationalError: near "1": 语法错误。

con = lite.connect('Records.db')
with con:
    cur = con.cursor()
    cur.execute("CREATE TABLE Questions(Id INTEGER PRIMARY KEY, Question STRING, Answer STRING, Mark INTEGER, Topic STRING, Incorrect STRING, QType STRING)")
    cur.execute("INSERT INTO Questions(1, 'What is 2/3 of 6?', '4', '1', 'Fractions', 'None', 'Numerical')")

2 个回答

1

你想做的事情的语法可以在这里找到,http://sqlite.org/lang_insert.html

在你的例子中,你可以输入:

cur = con.cursor()
cur.execute("CREATE TABLE Questions(Id INTEGER, Question STRING, Answer STRING)")
cur.execute("INSERT INTO Questions VALUES(1, 'What is 2/3 of 6?', '4')")

我觉得在写Python代码之前,先有一个sqlite环境来测试一下是很有帮助的。

2

INSERT语句写错了;你需要在里面加上VALUES这个关键词。正确的写法应该是:

cur.execute("INSERT INTO Questions VALUES (1, 'What is 2/3 of 6?', '4', '1', 'Fractions', 'None', 'Numerical')")
#                          --------^^^^^^

你把列的放在了SQL期待的(可选的)列名称的位置上。

撰写回答