使用pyodbc将包含日期的数据上载到MS Access数据库

时间:2016-01-21 16:16:19

标签: python date sql-insert ms-access-2013 pyodbc

我尝试使用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')

对于带有Date的上述示例,我收到以下错误: ProgrammingError:(' 42000',' [42000] [Microsoft] [ODBC Microsoft Access驱动程序] INSERT INTO语句中的语法错误。( - 3502)(SQLExecDirectW)')

我使用的是Python 2.7,MS Access 2013,pyodbc 2.7。谢谢。

2 个答案:

答案 0 :(得分:3)

要在Access SQL中使用reserved word之类的Date作为列名或表名,必须用方括号括起来,例如

INSERT INTO TableName ([Date]) VALUES ...

答案 1 :(得分:0)

如果它为您处理合格字段,这可能不适用于Python,但是,在某些其他语言中,要在Access表中插入Date值,您需要使用#字符来限定它们,即#01/21/2016#。