我正在使用运行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将是一件苦差事。
答案 0 :(得分:4)
不幸的是,您需要使用32位Python与32位MS Access进行通信。但是,您应该能够在64位Python的同时安装32位版本的Python。假设您使用的是Windows,则在自定义安装期间,您可以选择目标路径。然后使用virtualenv
。例如,如果您安装到C:\Python36-32
:
virtualenv --python=C:\Python36-32\bin\python.exe
答案 1 :(得分:4)
我不是python专家,只是为了澄清一些可能的误解...... Access数据库文件不是32位或64位。 32位和64位版本的Access都使用相同的数据库文件格式。
您不需要MS Office Access应用程序连接或使用Access数据库文件。您可以下载包含ODBC驱动程序的Access数据库引擎。 most recent 2010 version具有32位和64位版本。您只需在连接字符串中指定正确的驱动程序即可使用64位驱动程序。同样,这并不直接与Python中的连接有关,但也许您可以使用64位驱动程序直接使用它。
答案 2 :(得分:3)
是的。只需安装
AccessDatabaseEngine_X64.exe /passive
(包含x86和x64版本的驱动程序),您会没事的。不要忘记/passive
选项,因为如果这样做,除非您还安装了MS Office 2010,否则它将不会安装。您可以从Microsoft Access Database Engine 2010 Redistributable site
安装后,在python shell上运行以下命令以测试一切正常:
import pyodbc
[x for x in pyodbc.drivers() if x.startswith('Microsoft')]
,您应该会得到类似的打印输出
['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)']