使用 Access 和 pyodbc 的 INSERT 语句中的语法错误

Posted

技术标签:

【中文标题】使用 Access 和 pyodbc 的 INSERT 语句中的语法错误【英文标题】:Syntax error in INSERT statement with Access and pyodbc 【发布时间】:2016-12-01 05:42:54 【问题描述】:

我很难通过 Python 使用 pyodbc 将 SQL 插入到 Access 数据库中。每次尝试都会引发“无效语法错误”。

 import pyodbc

 ney = 'data1'
 soy = 'data2'

 MDBA = 'C:/db/dbBase.mdb'; DRVA = 'Microsoft Access Driver (*.mdb)'; PWDA = 'pw'

 # connect to db
 cona = pyodbc.connect('DRIVER=;DBQ=;PWD='.format(DRVA,MDBA,PWDA))
 cura = cona.cursor()
 SQL = ("""insert into [db1](col1, col2) values ('ney', 'soy')""") 
 #SQL = ("insert into db1(col1, col2values (?, ?)", ney, soy)

 cura.execute(SQL)
 cona.commit()

我能够执行 SELECT 语句,那么 INSERT 的正确语法是什么?

【问题讨论】:

注释掉的SQL是values之前没有右括号或空格的语法错误。 【参考方案1】:

我只是将您的代码复制并粘贴到 IDLE 中,它没有对我抛出错误。但是,它还将文字值“ney”和“soy”插入到表中。为了获取这些变量的 ,您需要使用参数化查询,如下所示:

sql = "insert into [db1] (col1, col2) values (?, ?)"
params = (ney, soy)  # tuple containing parameter values
cura.execute(sql, params)

【讨论】:

以上是关于使用 Access 和 pyodbc 的 INSERT 语句中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

pyodbc - 使用默认值将列添加到 MS Access

如何使用 pyodbc 获取 Access 数据库特定字段的数据类型?

使用 Pyodbc 在 MS Access 表中写入新行的问题

使用 pyodbc 将带日期的数据上传到 MS Access 数据库

如何使用 pyodbc 执行保存在 MS Access 中的查询

在 Access 中使用 pyodbc 处理日期,给出“参数太少”错误