32位pyodbc读取64位访问(accdb)

Epi*_*Adv 4 python ms-access odbc

我在Windows 8.1 64位计算机上运行python 2.7 32位.

我有Access 2013和我试图从python和pyodbc访问的.accdb文件.

我可以在64位ODBC管理器中创建64位DSN.但是,当我尝试从python连接到它时,我收到错误:

错误:(u'IM002',u'[IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序')

据推测,python只是在寻找32位DSN,并没有找到我创建的64位DSN.

当我尝试在32位ODBC管理器中创建32位DSN时,没有accdb文件的驱动程序(只是.mdb).

我想我需要一个32位ODBC驱动程序用于Access 2013文件(.accdb),但一直无法找到.

有可能做我想做的事吗? - 32位python访问Access 2013 .accdb文件?

Mic*_*las 9

包括Python在内的32位应用程序只能使用32位ODBC驱动程序.

包括Python在内的64位应用程序只能使用64位ODBC驱动程序.

如果你有:

  • pyodbc模块的32位Python
  • 64位MS Access ODBC驱动程序

然后你必须改变一些东西:

  1. 你可以安装64位版本的Python(我使用带有odbc模块的Active Python ),然后就可以使用64位版本的pyodbc模块(我看到它适用于Python 2.6,2.7和3.3)
  2. 您可以安装32位版本的MS Access驱动程序

使用pyodbc.dataSources()您可以列出ODBC源:

sources = pyodbc.dataSources()
dsns = list(sources.keys())
dsns.sort()
sl = []
for dsn in dsns:
    sl.append('%s [%s]' % (dsn, sources[dsn]))
print('\n'.join(sl))
Run Code Online (Sandbox Code Playgroud)

如果您使用ActiveState Python,那么您可以使用odbc我的食谱中的模块列出它们:http://code.activestate.com/recipes/578782-printing-list-of-odbc-data-sources/? in = user-186902


小智 5

我有同样的问题.对我来说,问题是我有32个python和32位pyodbc和32位MS Access.但是我创建的pyqt应用程序不能在64位Access的计算机上运行.

我的解决方案是 在命令提示符下安装32位Access驱动程序(如Mikal所述)... http://www.microsoft.com/en-us/download/details.aspx?id=13255 "/被动"选项.否则,它将无法安装.

例如,C:\ Downloads\AccessDatabaseEngine.exe/passive安装了驱动程序,现在我的应用程序在主机上运行没有问题.

安装的32位和64位Access驱动程序可能存在问题,也可能没有问题.到目前为止,我还没有看到任何.