Python - 32 位 pyodbc 与 64 位 Access/ODBC 驱动程序兼容性挑战

问题描述 投票:0回答:1

我有一个问题,希望这个社区能够提供帮助。我正在尝试复活一个用 32 位版本的 python 2.6.6 编写的旧程序(10 多年)。该程序的高级目的是可视化存储在 Access DB 中的数据。但是,我需要调整代码以解决该程序最初使用方式与我希望使用它的方式之间的一些细微差异(数据类型、可视化技术、数据库表名称/结构/位置等方面的差异)。

因此,我继续下载/安装了 32 位版本的 Python 2.6.6 以及所有必要的 32 位软件包(matplotlib、scipy、numpy、pyodbc、wxPython)。提示该线程的问题是32位pyodbc和64位版本的Access/Access ODBS驱动程序之间存在兼容性问题。我不确定这是否是因为我的计算机上没有 32 位 ODBC 驱动程序,或者我的计算机上有与 64 位 Access 不兼容的 32 位 ODBC 驱动程序。无论哪种方式,我都无法创建与 Access DB 的连接。

我列出了一些可能的解决方案。现在请知道,在 python/编程方面,我(充其量)是一个初学者。另请注意,由于弃用问题,我无法使用此版本的 Python 安装 pip。因此任何替代软件包都需要有安装程序。

  1. 不确定这是否可行,但在我的计算机上安装 32 位版本的 MS Access(我当前正在尝试连接到本地存储在我的计算机上的 Access DB)。如果是这样,我认为这不是一个长期选择,因为未来的数据库将位于使用 64 位 MS Access 的服务器上。

  2. 使用 64 位版本的 Python 2.6.6 和软件包。这里的问题是,大多数软件包都没有以 64 位安装程序格式提供我需要的版本(特别是 numpy、scipy 和 pyodbc)。源代码可用,并且我知道可能有编译 64 位构建发行版的方法,但我不知道如何执行此操作。首先,这是否可能(从源代码构建 64 位)?如果是,有任何参考文献可以清楚地解释如何做到这一点吗?

  3. 在 Python 3 中完全重建程序,因为大多数/如果不是全部包都是以 64 位提供的。我猜这将是推荐的方法,但考虑到我的经验水平,这将是核心选项。

  4. 还有其他可能的解决方案吗?

通知我该问题的原始错误:

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)')
python ms-access odbc pyodbc 32bit-64bit
1个回答
0
投票

找到了一个简单的解决方案。事实证明,我所需要的只是安装在我的计算机上的 .accdb 文件的 32 位 ODBC 驱动程序(我没有)。因此,从微软下载解决了这个问题,我现在可以使用 32 位 python/pyodbc 连接到 64 位 MS Access 数据库。

https://www.microsoft.com/en-us/download/details.aspx?id=13255

© www.soinside.com 2019 - 2024. All rights reserved.