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


问题内容

我在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)。

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

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


问题答案:

包括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位版本的od 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))

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