【问题标题】:uploading data with dates to MS Access database with pyodbc使用 pyodbc 将带日期的数据上传到 MS Access 数据库
【发布时间】: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。谢谢。

【问题讨论】:

  • 请格式化您的代码..
  • Datereserved word,您需要对其进行转义才能将其用作列名。
  • @mata 就是这样,一旦重命名日期,上述所有三个版本都可以工作。谢谢。

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


【解决方案1】:

要在 Access SQL 中使用 reserved word (如 Date)作为列名或表名,必须将其括在方括号中,例如,

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多