无法使用 pyodbc 连接到 Access DB

Posted

技术标签:

【中文标题】无法使用 pyodbc 连接到 Access DB【英文标题】:Cannot connect to Access DB using pyodbc 【发布时间】:2010-12-28 19:42:35 【问题描述】:

这几天我一直在反对这个问题。我正在尝试使用 pyodbc 连接到 Microsoft Access DB,但我似乎无法正确获取连接字符串或其他东西。这是我正在使用的:

cnxn = pyodbc.connect(r'DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=C:\Path\to\file.accdb')

我不断收到错误:

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)')

即使当我运行 dataSources() 时,我看到了:

'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)', 'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)'

这里有什么我严重遗漏的东西吗?

【问题讨论】:

有一个类似的问题可能会有所帮助:***.com/questions/3251702/… 我已经找到了该线程并尝试了它所建议的所有内容。似乎仍然无法使其正常工作。 在尝试其他 SO 解决方案后发布问题以指出它们并解释为什么它们没有解决您的问题,这很有帮助。 我得到了和以前一样的错误字符串 【参考方案1】:

这是一个 64 位问题。我通过使用 32 位 python 和 pyodbc 解决了它。

【讨论】:

【参考方案2】:

尝试添加Provider=MSDASQL。这是deprecated,但它似乎工作正常:

cnxn = pyodbc.connect(r'DRIVER=Microsoft Access Driver (*.mdb, *.accdb);
DBQ=C:\Path\to\file.accdb; Provider=MSDASQL;')

【讨论】:

试过了。不工作。我真的错过了什么吗?我正在运行带有 Access 2007 的 Windows 7 Professional 在 Windows 7 Professional 上连接到 .mdb 的 Access XP (2002) 对我有用。由于它已被弃用,因此它可能不支持新的 .accdb 格式。 它也适用于我在 Windows XP Professional 上连接到 .accdb 的 Access 2007。我没有安装 Access 2007 的 Win7 机器,所以无法复制您的环境。 好的,我现在真的很迷惑......我尝试的所有东西总是给我相同的错误字符串。 @SwimmingCode 对于您发布的这个问题,您是否有一些解决方案,而无需使用 32 位 python 和 pyodbc?我遇到了同样的问题。

以上是关于无法使用 pyodbc 连接到 Access DB的主要内容,如果未能解决你的问题,请参考以下文章

如何将 pyodbc 连接到 Access (.mdb) 数据库文件

在 Windows 上使用 pyodbc 连接到 Informix

无法从 Linux 连接到 Access 数据库

pyodbc 连接到 sqlite 数据库

如果 SQL Server 是 MS 2012,则从 Pyodbc 连接到 SQL 14 Azure db

使用 pyodbc 连接到链接访问数据库