"시나리오"라는 특정 테이블에 대한 기존 레코드의 열 값을 사용자가 업데이트 할 수 있도록 시도하고 있습니다. 업데이트되는 레코드는이 클래스의 각 인스턴스에 고유 한 "Scenario_Key"라는 인덱스 열로 식별됩니다. 이미 가지고있는 코드는 키, 값 쌍의 사전을 생성합니다. 여기서 key
은 업데이트되는 열의 이름이고 value
은 값으로 삽입됩니다. SQLite는 데이터베이스를 업데이트하기 위해 나는 노력하고있어 다음Python sqlite3 OperationalError : near "?": 구문 오류
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