首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >32位pyodbc读取64位访问(accdb)

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

Stack Overflow用户
提问于 2014-01-27 23:03:23
回答 3查看 10.9K关注 0票数 4

我在Windows8.1 64位机器上运行python 2.7 32位。

我可以访问2013年和一个.accdb文件,我正试图从访问该文件。

我可以在64位ODBC管理器中创建64位DSN。但是,当我试图从python连接到它时,我会得到以下错误:

错误:(U‘no 002’,u'IM002ODBC驱动程序管理器数据源名称未找到且未指定默认驱动程序‘)

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

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

我想我需要一个32位的ODBC驱动程序来访问2013年文件(.accdb),但是还没有找到一个。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-28 10:35:34

32位应用程序(包括Python )只能使用32位ODBC驱动程序。

64位应用程序(包括Python )只能使用64位ODBC驱动程序。

如果你有:

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

那么你必须改变一些事情:

  1. 您可以安装64位版本的Python (我使用带有odbc模块的Active Python ),然后可以使用64位版本的pyodbc模块(我在Python2.6、2.7和3.3中看到了)
  2. 您可以安装32位版本的Access访问驱动程序。

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

代码语言:javascript
复制
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

票数 10
EN

Stack Overflow用户

发布于 2015-01-22 22:41:53

我也有过同样的问题。对我来说,问题是我有32位python和32位pyodbc以及32位MS访问权限。但是我创建的pyqt应用程序不会在具有64位访问权限的计算机上运行。

我的解决方案是安装32位访问驱动程序(正如Mikal提到的).http://www.microsoft.com/en-us/download/details.aspx?id=13255在命令提示符下使用"/passive“选项。否则,它就不会安装。

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

安装32位和64位访问驱动程序可能存在问题,也可能没有问题。到目前为止,我还没见过。

票数 5
EN

Stack Overflow用户

发布于 2014-01-27 23:22:46

反复试验表明,安装"Access数据库引擎“2007似乎为访问accdb文件创建了32位ODBC源代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21393558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档