gpt4 book ai didi

python-2.7 - Python sqlite3 OperationalError:“?”附近:语法错误

转载 作者:行者123 更新时间:2023-12-03 19:33:06 26 4
gpt4 key购买 nike

尝试让用户为名为“方案”的特定表更新现有记录上的列值。正在更新的记录由称为“ Scenario_Key”的索引列标识,该索引列对该类的每个实例都是唯一的。我已经拥有的代码会生成一个键字典,值对,其中key是要更新的列的名称,而value是要插入其中的值。要更新sqlite数据库,请尝试以下操作:

cursor.execute("""UPDATE Scenario SET ?=? WHERE Scenario_Key=?;""", (key, new_val, self.scenario_key))


但是,当我尝试通过单击“保存并关闭”按钮执行时,得到以下信息:

Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1536, in __call__
return self.func(*args)
File "/Users/xxx/Documents/Consulting/DCA/Damage Control Assistant/EditScenarioWindow.py", line 91, in <lambda>
SaveAndCloseButton = Button(ButtonFrame, text="Save and Close", command=lambda: self.SaveAndCloseWindow())
File "/Users/xxx/Documents/Consulting/DCA/Damage Control Assistant/EditScenarioWindow.py", line 119, in SaveAndCloseWindow
cursor.execute(cmd_string, (key, new_val, self.scenario_key))
OperationalError: near "?": syntax error


我已经阅读过 sqlite3.OperationalError: near "?": syntax error,但是我正在尝试执行一个仅计算所有变量的sqlite查询,而不是从数据库获取值并从那里建立查询。我以元组形式提供位置参数。那么为什么sqlite3不喜欢我正在提交的查询?

最佳答案

您不能参数化列名称。在意识到SQL Injection攻击的可能性的同时,您可以执行以下操作:

cursor.execute("""UPDATE Scenario 
SET {}=?
WHERE Scenario_Key=?;""".format(key),
(new_val, self.scenario_key))

关于python-2.7 - Python sqlite3 OperationalError:“?”附近:语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38577182/

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