2017-03-10 36 views
0

我是Python新手(用於C#),需要使用Access數據庫(.accdb)。使用pyodbc進行參數化查詢的語法錯誤

構建SQL查詢的語法對我來說也有點奇怪。

我有以下幾點:

def updateSQL(table,keyField,keyVal,field,newVal): 
    sqlCommand = "UPDATE " + table + " SET (?)=(?) WHERE (?)=(?);" 
    crsr.execute(sqlCommand, (field, newVal, keyField, keyVal)) 
    crsr.commit() 
    print("Tables update successfully") 

但由於某些原因,我發現了以下錯誤:

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement

我已經嘗試了一些不同的事情的發言,我可以」 t爲我的生活找出它出錯的地方,有什麼想法?

回答

2

'?'標記爲,但列名不是值。你永遠不想把值放到你的SQL中,但你需要放置這些列。嘗試類似:

sql = 'update {} set {}=? where {}=?'.format(table, field, keyField) 
cursor.execute(sql, newVal, keyVal) 
+0

爲了防止「不幸」的表/列名稱,「[{}]」比普通老式的{}更可取。 –

+0

啊,謝謝!這是有道理的 –