小能豆

使用 python 执行插入查询,包括日期到访问中

py

我正在尝试执行查询以将两个值插入 Access 数据库中的一个简单表中。但我收到此错误:

pyodbc.ProgrammingError:(‘42000’,’[42000] [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句中出现语法错误。(-3502)(SQLExecDirectW)’)

我应该如何写日期格式?我的代码如下(该代码仅使用整数进行插入,因此我认为我的日期格式不正确):

import pyodbc

conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=C:\Users\behdad\Documents\Database1.accdb;')
cursor = conn.cursor()
cursor.execute("insert into Table1 (date, number) VALUES( '2021-02-05 00:00:00', 24)")

阅读 22

收藏
2024-12-01

共1个答案

小能豆

你的代码中遇到的错误通常是由于日期格式不符合 Microsoft Access 数据库的要求。Access 使用特定的日期格式来处理日期值。

解决方案:

  1. 日期格式:在 Access 中,日期值应该用 # 符号括起来,而不是使用单引号 '。此外,日期格式应为 MM/DD/YYYYYYYY-MM-DD(不过 MM/DD/YYYY 更常见于美国区域设置)。

  2. 修正代码:你可以按照以下方式调整代码:

import pyodbc

# 连接到数据库
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=C:\Users\behdad\Documents\Database1.accdb;')
cursor = conn.cursor()

# 执行插入操作,确保日期格式正确
cursor.execute("INSERT INTO Table1 (date, number) VALUES(#2021-02-05#, 24)")

# 提交更改并关闭连接
conn.commit()
conn.close()

解释:

  • 日期格式:在 SQL 语句中,日期应使用 # 符号括起来,并确保日期格式正确。你可以使用 YYYY-MM-DDMM/DD/YYYY 格式。#2021-02-05# 是正确的格式。
  • 提交更改conn.commit() 用于提交插入操作的更改,以确保数据成功保存到数据库中。

附加建议:

  • 连接和异常处理:确保在执行数据库操作时进行适当的异常处理,并在操作完成后关闭连接。例如:
try:
    # 执行数据库操作
    conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=C:\Users\behdad\Documents\Database1.accdb;')
    cursor = conn.cursor()
    cursor.execute("INSERT INTO Table1 (date, number) VALUES(#2021-02-05#, 24)")
    conn.commit()
except Exception as e:
    print("Error:", e)
finally:
    conn.close()

这会确保即使出现错误,连接也会在最后被关闭。

试试看这个修改,应该能解决你遇到的问题!

2024-12-01