我在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文件?
答案 0 :(得分:9)
包括Python在内的32位应用程序只能使用32位ODBC驱动程序。
包括Python在内的64位应用程序只能用于64位ODBC驱动程序。
如果你有:
pyodbc
模块的32位Python 然后你必须改变一些事情:
odbc
模块的Active Python),然后您可以使用64位版本的pyodbc
模块(我看到它用于Python 2.6,2.7和3.3)使用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
答案 1 :(得分: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 在命令提示符下使用" / passive"选项。否则,它就不会安装。
例如, C:\ Downloads \ AccessDatabaseEngine.exe / passive 安装了驱动程序,现在我的应用程序可以在主机上正常运行。
安装的32位和64位Access驱动程序可能存在问题,也可能没有问题。到目前为止,我还没有看到任何。
答案 2 :(得分:2)
试验和错误显示安装“Access Database Engine”2007似乎为Access accdb文件创建了32位ODBC源。