我有这个插入表格的代码。这是代码:
cursor.execute("INSERT INTO Exercises Exercise, Weight WHERE ID = ?)VALUES (?,?)",(Exercise, Weight, ID,))
Exercises
是表名
Exercise
和Weight
是表格中的字段
ID
是另一个表的外键
错误为sqlite3.OperationalError: near "Exercise": syntax error
感谢您的帮助
答案 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
答案 1 :(得分:1)
viewDidLoad
语句不支持INSERT
子句。只需在WHERE
语句中指定其他列ID
,就像这样 -
INSERT
或者,您可能正在根据提供的query = 'INSERT INTO Exercises(Exercise, Weight, ID) VALUES(?, ?, ?)'
cur.execute(query, (exercise, weight, id_))
值查找UPDATE
语句:
ID