【发布时间】:2016-11-29 08:27:16
【问题描述】:
试图让用户更新名为“Scenario”的特定表的现有记录的列值。正在更新的记录由名为“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 不喜欢我提交的查询呢?
【问题讨论】:
标签: python-2.7 sqlite