Python Sqlite插入错误
我有一个插入到表中的代码。代码如下:Python Sqlite插入错误,python,sqlite,sql-insert,Python,Sqlite,Sql Insert,我有一个插入到表中的代码。代码如下: cursor.execute("INSERT INTO Exercises Exercise, Weight WHERE ID = ?)VALUES (?,?)",(Exercise, Weight, ID,)) 练习是表名 练习和重量是表中的字段 ID是另一个表的外键 错误是sqlite3.OperationalError:near“Exercise”:语法错误 感谢您的帮助插入语句不支持WHERE子句。只需在INSERT语句中指定一个额外的列ID,如下
cursor.execute("INSERT INTO Exercises Exercise, Weight WHERE ID = ?)VALUES (?,?)",(Exercise, Weight, ID,))
练习
是表名
练习
和重量
是表中的字段
ID
是另一个表的外键
错误是sqlite3.OperationalError:near“Exercise”:语法错误
感谢您的帮助插入
语句不支持WHERE
子句。只需在INSERT
语句中指定一个额外的列ID
,如下所示-
query = 'INSERT INTO Exercises(Exercise, Weight, ID) VALUES(?, ?, ?)'
cur.execute(query, (exercise, weight, id_))
或者,您可以根据提供的ID
值查找UPDATE
语句:
query = '''
UPDATE Exercises
SET Exercise = ?, Weight = ?
WHERE ID = ?
'''
cur.execute(query, (exercise, weight, id_))
第一个语法错误是,Exercises Exercise
指定了一个表名和一个别名以供以后使用,您不允许在INSERT
语句中这样做,只能在SELECT
中这样做
但是,您可能不希望Exercise
成为表别名,而是希望Exercise,Weight
成为列列表,指定以后要为提供值的列。必须放在括号内:
INSERT INTO Exercises (Exercise, Weight) WHERE ID = ?)VALUES (?,?)
同时,在WHERE
子句之后,有一个不匹配的)
。这是另一个语法错误。我不确定这是否意味着什么,但如果你把它去掉,这句话至少可以解析成短语:
INSERT INTO Exercises (Exercise, Weight) WHERE ID = ? VALUES (?,?)
但这仍然没有任何意义。WHERE
子句在INSERT
上的意思是什么
而且,即使它确实有意义,您也在传递参数(Exercise,Weight,ID)
,但占位符的顺序不同,ID,Exercise,Weight。这将是一个相当严重的问题
不管怎样,快速猜一猜你想要什么:
cursor.execute("INSERT INTO Exercises (Exercise, Weight) VALUES (?,?)",
(Exercise, Weight,))
ID = cursor.lastrowid
我不确定你是不是想这么做,但这是明智的
或者,您可能希望更新现有行:
cursor.execute("UPDATE Exercises SET Exercise=?, Weight=? WHERE ID=?",
(Exercise, Weight, ID))
同时,您可能需要阅读上的文档和声明。尽管您可能首先需要一个基本的SQL教程复习。您想用WHERE子句实现什么?第一个)
应该做什么?您可能希望列列表周围有一个空格,但您肯定不希望where子句之前的所有内容都有半个空格。他可能希望UPDATE
而不是INSERT
,在这种情况下,很好地猜测是否希望存储ID;这是另一种可能性,我在回答中没有想到。更不用说糟糕的变量命名了。@cᴏʟᴅsᴘᴇᴇᴅ 嘿,我只需要调试一些向后获得两个命名参数的代码,并通过传递(相当于){'exercise':Weight,'Weight':exercise}
作为参数来修复它;相比之下,这件看起来并不那么糟糕嗨,谢谢大家的回复。我知道这不是最好的代码,因为我只是一个初学者,这是一个学校课程项目。我输入了上面的代码,但似乎每次添加新的练习和体重时都会在表中创建一条新记录,这意味着一个用户正在使用多个MemberID,因此如果关闭并重新打开框架,则无法引用。有没有办法防止这种情况发生,从而使ID相同?@DanielPatrick你需要准确地解释你想做什么,而不是让我们猜测。如果你不能用语言表达清楚(或者即使你可以!),展示一系列的调用以及预期的结果。请将其编辑到原始问题中。我想做的是,当单击按钮时,查询将使用正确的ID
将练习和权重插入表Exercises
。例如,如果输入了两个练习和两个权重,则它们将以相同的ID
插入表中。希望我们有同样的理解。