【问题标题】:pyodbc import error because of Invalid Datetime format由于日期时间格式无效,pyodbc 导入错误
【发布时间】:2020-09-09 11:56:50
【问题描述】:

我已经在这里查找过,但找不到解决我的问题的方法。我想从 4 个 accces 数据库中获取一个数据框,其中 2 个使用这个确切的代码,另外 2 个显示这个错误:

DataError: ('22007', '[22007] [Microsoft][ODBC-Treiber für Microsoft Access]Ungültiges Datetime-Format. bei Spaltennummer 11 (dtime) (35) (SQLGetData)')

每个数据库中的数据格式相同。请参阅下面的代码:

    conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=C:\Users\hoho11.DE\Documents\WLTP_Datenbank\Database_JRC2_SE_UK.accdb;')

conn = pyodbc.connect(conn_str)

cursor = conn.cursor()

for table_info in cursor.tables(tableType='TABLE'):
    print(table_info.table_name)

错误就在这里:

df_3 = pd.read_sql_query(sql='SELECT * FROM TB_cycles_car', con=conn)
df_3.head()

非常感谢您的支持!!

【问题讨论】:

  • 能否提供一个小型示例数据库的下载链接,可用于重现该问题?
  • 另外,请edit 确认您尝试读取的表是普通的本地 Access 表,而不是连接到其他文件格式的视图或链接表(例如, Excel 电子表格或 CSV 文件)。
  • 我用 5.000 行生成了少量,但问题是代码可以使用它。它只是不适用于孔 accdb。我尝试将 accdb 导入另一个 accdb,但错误保持不变。我真的很困惑。
  • 如果我删除 accdb 表中的 'dtime' 列,代码也能正常工作@GordThompson
  • 如果您执行rows = cursor.execute("SELECT * FROM TB_cycles_car").fetchall() ...,您会收到错误吗?

标签: python pandas ms-access pyodbc


【解决方案1】:

所以我终于找到了答案。我选择了错误显示列并将其作为字符串导入。我刚刚写了:

df = pd.read_sql_query(sql='SELECT ID, ..., Cstr(dtime), dates FROM TB_cycles_car', con=conn)

DataError 不再出现 :) 非常感谢@GordThompson 的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    相关资源
    最近更新 更多