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

나는 다음이 내가 잘못하면 어떤 생각이 떠오르지 않는가?

답변

2

'?' 표식은 값인이지만 열 이름은 값이 아닙니다. 값을 SQL에 두지는 않겠지 만 열을 넣어야합니다. 다음과 같이 시도하십시오 :

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

"불행한"테이블/컬럼 이름에 대한 보호를 위해, 평범한'{}'보다'[{}]'이 (가) 선호됩니다. –

+0

아, 고마워! 그건 말이 될거야. –