Tom*_*Ray 1 python sqlite syntax
这是我用来更新sqlite数据库中信息的代码:
self.c.execute("UPDATE proxydata (proxy, description) VALUES ('" + proxy + "', '" + description + "') WHERE proxy='" + proxy + "'")
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
sqlite3.OperationalError: near "(": syntax error
Run Code Online (Sandbox Code Playgroud)
对于我的生活,我找不到错误.执行时的两个变量都是正确格式化的字符串.
编辑:
这很好用:
self.c.execute("UPDATE proxydata SET description='" + description + "' WHERE proxy='" + proxy + "'")
Run Code Online (Sandbox Code Playgroud)
你可以关闭线程.
使用参数化的sql:
sql='UPDATE proxydata SET description = ? WHERE proxy = ?'
args=[decription,proxy]
self.c.execute(sql,args)
Run Code Online (Sandbox Code Playgroud)
这显然更容易,因为您不必自己引用参数,因此不易出错.它也更安全,因为参数化sql允许sqlite3防止sql注入.
请注意,如果proxy
或其description
本身包含单引号,则需要对其进行转义.您手动构造SQL语句不能正确地转义该类型的引号.这可能是您看到的语法错误的原因.
编辑:正如其他人所说,语法错误的真正来源UPDATE ... VALUES ... WHERE
就是无效(sqlite)SQL.在正确的UPDATE语法是UPDATE ... SET ... WHERE
.
归档时间: |
|
查看次数: |
1078 次 |
最近记录: |