gpt4 book ai didi

python - Sqlite 语法错误,即使没有语法错误。帮助?

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:33 25 4
gpt4 key购买 nike

这是我用来更新我的 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 注入(inject)。


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


编辑:正如其他人所指出的,语法错误的真正来源只是 UPDATE ... VALUES ... WHERE 不是有效的 (sqlite) SQL。 proper UPDATE syntaxUPDATE ... SET ... WHERE

关于python - Sqlite 语法错误,即使没有语法错误。帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8233367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com