使用pyodbc进行参数化查询的语法错误

时间:2017-03-10 20:47:16

标签: python sql ms-access pyodbc

我是Python新手(习惯于C#),需要使用Access数据库(.accdb)。

构建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驱动程序] UPDATE中的语法错误   声明

我在声明中尝试了一些不同的东西,我不能为我的生活找出错误的地方,任何想法?

1 个答案:

答案 0 :(得分:3)

'?'标记用于,但列名不是值。您永远不想将值放入SQL中,但您需要放置列。尝试类似:

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