使用python将excel数据导入ms access

问题描述 投票:0回答:1

我正在尝试使用 python 将 excel 数据导入到 ms access 文件中。

在我的代码下面;

import pandas as pd
import urllib.parse
import sqlalchemy
from sqlalchemy import create_engine
import os

os.getcwd()
Chd= os.chdir('D:/NX_BACKWORK/Feeder Setup_PROCESS')
Chd = os.getcwd()

#xls = pd.ExcelFile('Upload-Data.xlsx',engine='openpyxl')
df1 = pd.read_excel('123.xlsx', sheet_name='T_PBAR')

print(df1.head(10))
print('open mdb')

cnnstr = (
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};"
    r"DBQ=D:\NX_BACKWORK\Feeder Setup_PROCESS\MODEL.mdb"
)

cnnurl = f"access+pyodbc:///?odbc_connect={urllib.parse.quote_plus(cnnstr)}"
acc_engine = create_engine(cnnurl)
print('writing to access')
df1.to_sql("T_PBAR",acc_engine, if_exists='append')

print('write complete')

这是我在下面的行中遇到的错误

df1.to_sql("T_PBAR",acc_engine, if_exists='append')

发生异常:InterfaceError (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)') (此错误的背景位于:https://sqlalche.me/e/20/rvf5) pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)')

上述异常是导致以下异常的直接原因:

文件“C:\Users\zen\OneDrive\Documents\Python\PandasAPP\TESTNGpy.py”,第 67 行,位于 df1.to_sql("T_PBAR",acc_engine, if_exists='追加') sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)') (此错误的背景位于:https://sqlalche.me/e/20/rvf5)

需要支持

python pandas ms-access sqlalchemy pyodbc
1个回答
0
投票

您遇到的错误表明 ODBC 驱动程序配置存在问题。您可以采取以下几个步骤来解决该问题:

  1. 检查 ODBC 驱动程序安装: 确保您的计算机上安装了 Microsoft Access ODBC 驱动程序。如果没有,您可以到微软官方网站下载并安装。

  2. 在连接字符串中使用正确的驱动程序: 确保连接字符串中指定的 ODBC 驱动程序与已安装的驱动程序匹配。对于 Access 数据库,您应该使用

    Microsoft Access Driver (*.mdb, *.accdb)

  3. 指定 ODBC 驱动程序的完整路径: 修改连接字符串以包含 ODBC 驱动程序的完整路径。按如下方式更新

    cnnstr
    变量:

    cnnstr = (
        r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};"
        r"DBQ=D:\NX_BACKWORK\Feeder Setup_PROCESS\MODEL.mdb;"
        r"DriverId=25;"
        r"FIL=MS Access;"
        r"MaxBufferSize=2048;"
    )
    
  4. 使用

    pypyodbc
    库: 尝试使用
    pypyodbc
    库而不是
    pyodbc
    。确保它已安装(
    pip install pypyodbc
    ),然后相应地修改您的代码:

    import pypyodbc
    
    # ...
    
    cnnurl = f"DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={Chd}\\MODEL.mdb"
    acc_conn = pypyodbc.connect(cnnurl)
    acc_cursor = acc_conn.cursor()
    
    # ...
    
    df1.to_sql("T_PBAR", acc_engine, if_exists='append', index=False)
    

    更新

    cnnurl
    变量以使用正确的驱动程序和数据库路径。

  5. 确保访问权限: 确保运行 Python 脚本的用户具有访问 Access 数据库所需的权限。

进行这些更改后,尝试再次运行脚本。如果问题仍然存在,检查是否有任何其他错误消息或详细信息可能会有所帮助,以便更深入地了解问题。

© www.soinside.com 2019 - 2024. All rights reserved.