Sqlite INSERT INTO错误

时间:2018-03-11 20:29:50

标签: python sqlite sql-insert

我有这个插入表格的代码。这是代码:

cursor.execute("INSERT INTO Exercises Exercise, Weight WHERE ID = ?)VALUES (?,?)",(Exercise, Weight, ID,))

Exercises是表名

ExerciseWeight是表格中的字段

ID是另一个表的外键

错误为sqlite3.OperationalError: near "Exercise": syntax error

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

第一个语法错误是Exercises Exercise指定了一个表名和一个稍后要使用的别名,并且不允许在INSERT语句中执行此操作,仅在{{1}中}。

但您可能不希望SELECT成为表别名,您希望Exercise成为列列表,指定您要为Exercise, Weight提供的列后来。这必须在括号内:

VALUES

同时,在INSERT INTO Exercises (Exercise, Weight) WHERE ID = ?)VALUES (?,?) 子句之后,您有一个不匹配的)。这是另一种语法错误。我不确定这是否意味着什么,但如果你只是把它拿出来,那么这句话至少可以解析为短语:

WHERE

但这仍然没有任何意义。 INSERT INTO Exercises (Exercise, Weight) WHERE ID = ? VALUES (?,?) 条款在WHERE上的含义是什么?

而且,即使它确实有意义,你也会传递参数INSERT,但你的占位符使用不同的顺序ID,练习,重量。那将是一个非常严重的问题。

无论如何,快速猜测你想要的东西:

(Exercise, Weight, ID)

我不确定这是不是你想要做的,但这是明智的。

或者,或许,您可能想要更新现有行:

cursor.execute("INSERT INTO Exercises (Exercise, Weight) VALUES (?,?)",
    (Exercise, Weight,))
ID = cursor.lastrowid

同时,您可能希望阅读有关INSERTUPDATE语句的文档。虽然您可能需要先进行基本的SQL教程复习。

答案 1 :(得分:1)

viewDidLoad语句不支持INSERT子句。只需在WHERE语句中指定其他列ID,就像这样 -

INSERT

或者,您可能正在根据提供的query = 'INSERT INTO Exercises(Exercise, Weight, ID) VALUES(?, ?, ?)' cur.execute(query, (exercise, weight, id_)) 值查找UPDATE语句:

ID