使用Python更新表时Sqlite出错
我正在使用python更新Sqlite表中的条目。 我使用的命令是:使用Python更新表时Sqlite出错,python,sqlite,Python,Sqlite,我正在使用python更新Sqlite表中的条目。 我使用的命令是: handle.execute("UPDATE RECORD set NAME=%s DEVICE=%s PROJECT=%s IP=%s COMMENT=%s where ID = %s"%(arg[2],arg[3],arg[4],arg[5],arg[6],arg[1])) 对此,我得到一个错误,如下所示: sqlite3.OperationalError: near "DEVICE": syntax error 我无
handle.execute("UPDATE RECORD set NAME=%s DEVICE=%s PROJECT=%s IP=%s COMMENT=%s where ID = %s"%(arg[2],arg[3],arg[4],arg[5],arg[6],arg[1]))
对此,我得到一个错误,如下所示:
sqlite3.OperationalError: near "DEVICE": syntax error
我无法理解
设备的具体错误。我还检查了变量是否符合预期。数据库有一个名为device的列,可以使用此python文件打开/访问和编辑数据库。集合项之间缺少逗号
除此之外,为了防止SQL注入,请使用以下方法代替字符串格式:
handle.execute(
"""UPDATE RECORD
SET NAME=%s, DEVICE=%s, PROJECT=%s, IP=%s, COMMENT=%s
WHERE ID = %s""",
(arg[2], arg[3], arg[4], arg[5], arg[6], arg[1]))
更新
如果坚持使用字符串格式,则应引用%s
:'%s'
在列之间添加逗号。现在它给了我一个错误,名为“sqlite3.OperationalError:no-this-column:john”。这里John是我试图在列中更新的变量:-“name”。相反,它为什么要搜索名为john的列?@john,您需要引用值%s
->'%s'
。顺便说一句,正如我在回答中提到的,您最好使用参数传递,而不是自己使用字符串格式。SET NAME='%s',DEVICE='%s',PROJECT='%s',IP='%s',COMMENT='%s',其中ID='%s'