2017-03-10 18 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

ああ、ありがとう!それは意味をなさないだろう –

関連する問題