使用 pyodbc 将带日期的数据上传到 MS Access 数据库
Posted
技术标签:
【中文标题】使用 pyodbc 将带日期的数据上传到 MS Access 数据库【英文标题】:uploading data with dates to MS Access database with pyodbc 【发布时间】:2016-01-21 16:16:19 【问题描述】:我正在尝试使用 Python 中的 pyodbc 库将带有日期的数据插入 MS Access。我的表有 3 个字段:日期(日期/时间)、1Y(数字)和 2Y(数字)。我知道问题不是连接问题,因为我可以在没有 Date 字段的情况下成功插入。例如,这有效:
cursor.execute("insert into test(1Y,2Y) values (?,?)",'3','4')
现在包括日期,我试过了:
cursor.execute("insert into test(Date,1Y,2Y) values (?,?,?)",'2010-01-01','3','4')
cursor.execute("insert into test(Date,1Y,2Y) values (?,?,?)",date(2010,1,1),'3','4')
cursor.execute("insert into test(Date,1Y,2Y) values (?,?,?)",'1/1/2010','3','4')
对于上述日期示例,我收到以下错误: ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句中的语法错误。(-3502) (SQLExecDirectW)')
我正在使用 Python 2.7、MS Access 2013、pyodbc 2.7。谢谢。
【问题讨论】:
请格式化您的代码..Date
是reserved word,您需要对其进行转义才能将其用作列名。
@mata 就是这样,一旦重命名日期,上述所有三个版本都可以工作。谢谢。
【参考方案1】:
要在 Access SQL 中使用 reserved word (如 Date
)作为列名或表名,必须将其括在方括号中,例如,
INSERT INTO TableName ([Date]) VALUES ...
【讨论】:
【参考方案2】:如果 Python 为您处理限定字段,这可能不适用于 Python,但是,在某些其他语言中,要在 Access 表中插入日期值,您需要使用 # 字符来限定它们,即 #01/21/2016#。
【讨论】:
以上是关于使用 pyodbc 将带日期的数据上传到 MS Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pyodbc 连接到具有用户定义函数的 MS Access 文件