1
試圖讓用戶更新名爲「Scenario」的特定表的現有記錄的列值。正在更新的記錄由稱爲「Scenario_Key」的索引列標識,該列對於該類的每個實例都是唯一的。我已經擁有的代碼會生成一個鍵值對的字典,其中key
是正在更新的列的名稱,而value
是插入其中的值。要更新SQLite數據庫我想以下幾點:Python sqlite3 OperationalError:接近「?」:語法錯誤
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?
感謝您的快速響應!這工作,甚至更好,我想我明白爲什麼。 也感謝您的警告。由於各種原因,安全和注入攻擊並不是這個項目的主要關注點,但絕對是未來需要注意的一點。 –
乾杯,隊友。快樂的編碼給你! – bernie