2014-04-16 60 views
0

所以我有以下聲明Update語句與幾個變量

cursor.execute("UPDATE IllnessTable SET (?) = (?) WHERE IllnessName = (?)",  
(self.SymptomName,self.IllnessStatus[ControlVar],CurrentIllnessName)) 

其中self.SymptomName是一個字符串,self.IllnessStatus [ControlVar爲整數且CurrentIllnessName是一個字符串。這些變量存在並直接對應於我的表。我不知道這有什麼錯這條SQL語句本身我只是得到:

sqlite3.OperationalError: near "(": syntax error 

回答

0

可以使用?佔位符只爲文字,而不是標識符,例如列名。在你的編程語言中使用字符串格式來產生一個帶有你想要的標識符的SQL。

此外,在parens中包含?是沒有必要的。

因此,變化是這樣的:

cursor.execute("UPDATE IllnessTable SET {} = ? WHERE IllnessName = ?".format(self.SymptomName),  
(self.IllnessStatus[ControlVar],CurrentIllnessName)) 
+0

如果SymptomName可以改變,該怎麼辦呢?因爲發生了什麼事情,我允許程序用戶創建一行,然後更新每行的內容,其中行名爲self.SymptomName。 – user3512014

+0

然後將查詢字符串格式化爲包含python中的動態列名稱。 – laalto

+0

謝謝,那就是訣竅:) – user3512014