64 位 pyodbc 是否可以与 32 位 MS Access 数据库通信?

use*_*207 10 python ms-access odbc pyodbc 32bit-64bit

我正在使用运行 python v3 的 64 位 python anaconda v4.4。我有 MS Access 2016 32 位版本。我想使用 pyodbc 让 python 与 Access 交谈。是否可以使用 64 位 pyodbc 与 MS Access 2016 32 位数据库通信?

我已经有许多使用 64 位 python anaconda 运行的 python 应用程序。降级到 32 位 python 将是一件苦差事。

C P*_*ins 6

我不是 python 专家,只是为了澄清一些可能的误解... Access 数据库文件不是 32 位或 64 位。32 位和 64 位版本的 Access 使用相同的数据库文件格式。

您不需要MS Office Access 应用程序来连接或使用 Access 数据库文件。您可以下载包含 ODBC 驱动程序的 Access 数据库引擎。最新的 2010 版本有 32 位和 64 位版本。您只需在连接字符串中指定正确的驱动程序即可使用 64 位驱动程序。同样,这并不直接涉及 Python 中的连接,但也许您可以使用 64 位驱动程序让它直接工作。


小智 6

是的你可以:

只需安装

AccessDatabaseEngine_X64.exe /passive
Run Code Online (Sandbox Code Playgroud)

(其中包含 x86 和 x64 版本的驱动程序),您会没事的。不要忘记该/passive选项,因为如果您这样做,除非您还安装了 MS Office 2010,否则它不会安装。您可以从Microsoft Access Database Engine 2010 Redistributable 站点下载该文件

安装后,AccessDatabaseEngine_X64.exe您应该在 python shell 上运行以下代码以测试一切正常:

import pyodbc
[x for x in pyodbc.drivers() if x.startswith('Microsoft')]
Run Code Online (Sandbox Code Playgroud)

你应该得到一个像

['Microsoft Access Driver (*.mdb, *.accdb)',
 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)',
 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)', 
 'Microsoft Access Text Driver (*.txt, *.csv)']
Run Code Online (Sandbox Code Playgroud)

小心。

  • 请注意,如果您在 32 位 Office 中安装 64 位驱动程序,则还需要删除或重命名以下注册表项中的 mso.dll 注册表值: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths 如果不这样做每次您尝试打开它时,此 Office 都会尝试运行修复安装程序。 (2认同)