Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sqlite语法错误,即使存在';没有语法错误。帮忙?_Python_Sqlite_Syntax - Fatal编程技术网

Python Sqlite语法错误,即使存在';没有语法错误。帮忙?

Python Sqlite语法错误,即使存在';没有语法错误。帮忙?,python,sqlite,syntax,Python,Sqlite,Syntax,下面是我用来更新sqlite数据库中信息的代码: self.c.execute("UPDATE proxydata (proxy, description) VALUES ('" + proxy + "', '" + description + "') WHERE proxy='" + proxy + "'") 但我得到了这个错误: sqlite3.OperationalError: near "(": syntax error 我一生都找不到错误。执行时两个变量都是格式正确的字符串 编辑:

下面是我用来更新sqlite数据库中信息的代码:

self.c.execute("UPDATE proxydata (proxy, description) VALUES ('" + proxy + "', '" + description + "') WHERE proxy='" + proxy + "'")
但我得到了这个错误:

sqlite3.OperationalError: near "(": syntax error
我一生都找不到错误。执行时两个变量都是格式正确的字符串

编辑:

这很好:

self.c.execute("UPDATE proxydata SET description='" + description + "' WHERE proxy='" + proxy + "'")

您可以关闭线程。

使用参数化sql:

sql='UPDATE proxydata SET description = ? WHERE proxy = ?'
args=[decription,proxy]
self.c.execute(sql,args)
这显然更容易,因为您不必自己引用参数,因此更不容易出错。 它也更安全,因为参数化sql允许sqlite3防止sql注入


注意如果
proxy
description
本身包含一个引号,则需要对其进行转义。SQL语句的手动构造不能正确地转义该类型的引号。这可能是您看到的语法错误的原因



编辑:正如其他人所指出的,语法错误的真正来源只是
UPDATE。。。价值观其中
无效(sqlite)SQL。这是
更新。。。设置其中

使用参数化sql:

sql='UPDATE proxydata SET description = ? WHERE proxy = ?'
args=[decription,proxy]
self.c.execute(sql,args)
这显然更容易,因为您不必自己引用参数,因此更不容易出错。 它也更安全,因为参数化sql允许sqlite3防止sql注入


注意如果
proxy
description
本身包含一个引号,则需要对其进行转义。SQL语句的手动构造不能正确地转义该类型的引号。这可能是您看到的语法错误的原因



编辑:正如其他人所指出的,语法错误的真正来源只是
UPDATE。。。价值观其中
无效(sqlite)SQL。这是
更新。。。设置其中

没有语法错误就没有语法错误。试试这个:

self.c.execute("UPDATE proxydata SET proxy='" + proxy + "', description='" + description + "' WHERE proxy='" + proxy + "'")

这里描述了这种语法:

没有语法错误就没有语法错误。试试这个:

self.c.execute("UPDATE proxydata SET proxy='" + proxy + "', description='" + description + "' WHERE proxy='" + proxy + "'")

这里描述了这种语法:

在将sql字符串传递给执行和转储它的值之前构造它。然后检查实际值,看看您是否仍然认为它是正确的。如果是,则向我们显示生成的sql。在传递sql字符串以执行和转储其值之前,先构造sql字符串。然后检查实际值,看看您是否仍然认为它是正确的。如果是,则显示生成的sql。