使用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 我无

我正在使用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

我无法理解
设备的具体错误。我还检查了变量是否符合预期。数据库有一个名为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'