使用pyodbc连接Progress OpenEdge 10.1B驱动报错126找不到指定模块
错误原因
- Progress OpenEdge 10.1B 官方仅提供32位ODBC驱动,无原生64位版本,报错中提到的
pgoe1022.dll为32位动态链接库,64位进程无法直接加载,因此系统提示找不到指定模块。 - Python运行环境与驱动架构不匹配:若你当前使用的是64位版本Python,默认会调用系统64位ODBC驱动列表,找不到匹配的64位Progress驱动就会触发126错误。
- 网络映射盘权限问题:报错中的dll存储在网络映射盘
U:\路径下,64位进程对网络映射盘的访问权限默认与32位进程不同,也可能导致驱动加载失败。
解决方案
方案1:使用32位Python环境(最稳妥)
- 卸载当前64位Python,安装32位版本Python(3.7及以下版本对OpenEdge 10.1B的兼容性更好)。
- 重新安装对应32位版本的pyodbc库:
pip install pyodbc
- 无需修改现有连接代码,直接运行即可正常连接。
方案2:配置32位ODBC数据源别名
- 按下
Win+R输入odbcad32.exe打开32位ODBC数据源管理器,不要使用系统默认的64位ODBC管理器。 - 在「用户DSN」或「系统DSN」页签点击添加,选择
Progress OpenEdge 10.1B Driver,按照你的连接参数填写主机地址、数据库名、端口、账号密码,测试连接成功后保存数据源,可自定义命名比如Progress_Uyum2008。 - 修改连接代码,直接调用已配置的数据源别名即可:
import pyodbc cnxn = pyodbc.connect("DSN=Progress_Uyum2008")
方案3:必须使用64位Python的处理方法
- 将Progress OpenEdge数据库升级到11.2及以上版本,该版本开始官方提供原生64位ODBC驱动,可直接匹配64位Python和pyodbc。
- 若无法升级数据库版本,可部署32位到64位的ODBC桥接工具实现适配,该方法会增加连接性能损耗,稳定性低于直接使用32位环境。
内容的提问来源于stack exchange,提问作者mert karadeniz
相关产品推荐
相关产品推荐

