windows环境中python连接到达梦库及相关报错解决办法

 更新时间:2025年07月28日 11:22:35   作者:8年老菜鸡  
达梦数据库是由中国达梦数据库有限公司开发的一款国产数据库管理系统,这篇文章主要介绍了windows环境中python连接到达梦库及相关报错解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下

首先安装python,达梦数据库,这里默认已经安装好了

1、安装达梦数据库(dmPython)驱动

一、获取驱动文件

从达梦数据库安装目录获取 (通常位于 DM安装目录\drivers\python\dmPython)

或从达梦官网下载对应版本的Windows驱动包

二、复制文件

找到达梦数据库安装目录中的dmPython文件夹

将该文件夹复制到Python的site-packages目录下:

通常路径为:C:\Python38\Lib\site-packages\

 确保目录结构如下:

 C:\Python38\Lib\site-packages\
└── dmPython
    ├── __init__.py
    ├── dmPython.pyd
    └── ...其他文件

如果不清楚python的安装路径,可以使用下面的方法确认一下:

打开cmd,运行:

where python

 或者 运行:

python -c "import sys; print(sys.executable)"

会输出 python的路径

三、 安装驱动

打开cmd,进入到  C:\Python38\Lib\site-packages\dmPython 目录中,(就是上一步复制文件夹后的目录),或者直接在文件夹路径栏输入cmd 回车,能快速打开cmd并进入到当前目录

 

然后输入

python setup.py install

 等待安装完成

安装完成后,会在 ......\Lib\site-packages\ 目录下看到  dmPython-2.5.8-py3.12-win-amd64.egg 目录

2、测试安装

一、打开vscode

创建.py文件

输入:

import dmPython
import sys

try:
    conn = dmPython.connect(
        user='SYSDBA',
        password='SYSDBA',
        server='127.0.0.1',
        port=5236,
        connect_timeout=5  # 添加超时参数
    )
    print("连接成功!服务版本:", conn.server_version)
    conn.close()
except dmPython.Error as e:
    print("达梦原生错误:", e)
except Exception as e:
    print("通用异常:", sys.exc_info()[1])

import dmPython

# 检查驱动是否包含关键方法
print("dmPython 可用方法:", [attr for attr in dir(dmPython) if not attr.startswith('_')])

# 尝试建立连接(替换实际参数)
try:
    conn = dmPython.connect(
        user='SYSDBA',
        password='SYSDBA',
        server='localhost',
        port=5236
    )
    print("连接成功!")
    conn.close()
except Exception as e:
    print("连接失败:", e)

如果不方便创建文件,可以直接在vscode的终端里面,输入:

python -c """
import dmPython
try:
    conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='127.0.0.1', port=5236)
    print('连接成功!')
    conn.close()
except Exception as e:
    print('连接失败:', e)
"""

然后回车运行,查看运行结果;

如果连接成功,则大功告成,如果报错,查看报错解决办法;

3、报错解决

一、连接失败: <class 'dmPython.Connection'> returned a result with an exception set

这个错误表明 dmPython 驱动虽然被成功导入,但在尝试建立数据库连接时,底层 C 代码抛出了异常但未能正确传递到 Python 层。

核心排查步骤:

1、验证驱动完整性:

# 检查驱动文件是否存在
python -c "import os, dmPython; print(f'驱动路径: {os.path.dirname(dmPython.__file__)}')"

正常情况会打印驱动的路径,大概是:....\Lib\site-packages\dmpython-2.5.8-py3.12-win-amd64.egg

如果没有这个目录,建议回到第1步,重新安装达梦驱动;

2、检查依赖库

打开Windows PowerShell,进入到达梦数据库目录的 bin 目录中    

运行下面两行: 

 ls *odbc*
 ls *dmdpi*

 运行结果:

重点查看是否存在这两个库文件,如果不存在可以冲其他相同环境下的windows中拷贝过来

3、检查数据库连接信息

也有可能本地或远程不存在SYSDBA数据库,找一个DM管理工具可以确认连上去的数据库,然后使用把上述测试代码中的连接信息改成可以连接上去的数据库的连接信息,再重试

二、连接失败: module 'dmPython' has no attribute 'connect'

这个错误表明 dmPython 模块虽然能导入,但缺少关键的 connect 方法,这通常是由于驱动文件不完整或安装不正确导致的。

1、检查关键文件是否存在

python -c "import dmPython, os; print(os.path.dirname(dmPython.__file__))"

正常情况会打印驱动的路径,大概是:....\Lib\site-packages\dmpython-2.5.8-py3.12-win-amd64.egg

如果没有这个目录,建议回到第1步,重新安装达梦驱动;

2、检查驱动与Python的兼容性

python -c "import struct; print('Python位数:', struct.calcsize('P')*8, '位')"

正常情况下会输出:        Python位数: 64 位 

反正必须与达梦驱动架构一致,不能一个是 64位 一个是32位

如果不匹配,重装匹配的 Python 或达梦驱动(如达梦是64位,Python也需64位)

三、命令行中能成功连接,但IDE/VSCode中却找不到dmPython模块

这是典型的Python环境配置不一致问题。

在终端执行命令:

where python
python -c "import sys; print(sys.executable)"

这两个命令都可以输出 python 安装路径。

在 vscode 的终端中也输入这两个命令,查看输出结果

如果路径不同​:说明两者使用了不同的Python解释器

解决办法1:修改VSCode解释器路径

  1. 在VSCode中按 Ctrl+Shift+P
  2. 输入 Python: Select Interpreter
  3. 选择与命令行相同的Python路径(即步骤上述命令输出的路径)

解决办法:2:复制驱动到VSCode环境

在cmd中运行

python -c "import dmPython, os; print(os.path.dirname(dmPython.__file__))"

 会输出一段路径, 复制到VSCode环境的site-packages

cp -r <上述路径>/dmPython <VSCode的Python路径>/Lib/site-packages/

验证修复结果:在vscode中,运行 测试代码,记得替换下面的 xxx

import dmPython
print("模块路径:", dmPython.__file__)

try:
    conn = dmPython.connect(
        user='xxx',
        password='xxx',
        server='xxx',
        port=5236
    )
    print("VSCode连接成功!")
    conn.close()
except Exception as e:
    print("VSCode连接失败:", e)

总结

到此这篇关于windows环境中python连接到达梦库及相关报错解决办法的文章就介绍到这了,更多相关windows python连接达梦库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中dot函数运算过程总结

    python中dot函数运算过程总结

    dot函数为numpy库下的一个函数,主要用于矩阵的乘法运算,其中包括:向量内积、多维矩阵乘法和矩阵与向量的乘法,下面这篇文章主要给大家介绍了关于python中dot函数运算过程的相关资料,需要的朋友可以参考下
    2022-09-09
  • pycharm中import呈现灰色原因的解决方法

    pycharm中import呈现灰色原因的解决方法

    这篇文章主要介绍了pycharm中import呈现灰色原因的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python 使用GDAL实现栅格tif转矢量shp的方式小结

    python 使用GDAL实现栅格tif转矢量shp的方式小结

    今天通过本文给大家分享python 使用GDAL实现栅格tif转矢量shp的方式小结,计划是使用栅格转矢量的方式,将栅格数据转为矢量shp文件,然后进行矢量切片,使用Mapbox进行前端动态渲染,具体内容详情跟随小编一起看看吧
    2021-08-08
  • python实现删除文件与目录的方法

    python实现删除文件与目录的方法

    这篇文章主要介绍了python实现删除文件与目录的方法,详细的分析了涉及Python文件操作的各种方法,需要的朋友可以参考下
    2014-11-11
  • 浅析python中的分片与截断序列

    浅析python中的分片与截断序列

    这篇文章主要介绍python对序列的分片方法。通过分片规则可以很简单的处理一些复杂的for循环操作。很有借鉴价值,有需要的可以一起参考学习。
    2016-08-08
  • Python绘图Turtle库的安装问题解决

    Python绘图Turtle库的安装问题解决

    这篇文章主要介绍了Python绘图中解决Turtle的安装问题示例分析,也遇到过相同问题的同学可以借鉴参考下,希望能够解决你的问题
    2021-10-10
  • python中的取反操作符(~)

    python中的取反操作符(~)

    这篇文章主要介绍了python中的取反操作符(~),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • python代码实现猜拳小游戏

    python代码实现猜拳小游戏

    这篇文章主要为大家详细介绍了python代码实现猜拳小游戏,以文本文件存储与调用信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • python关于多值参数的实例详解

    python关于多值参数的实例详解

    在本篇内容里小编给大家整理了一篇关于python关于多值参数的实例详解内容,有兴趣的朋友们可以学习下。
    2021-07-07
  • Python处理PPT文件的实用知识点总结

    Python处理PPT文件的实用知识点总结

    python是一门很强大的语言,因为有着丰富的第三方库,所以可以说Python是无所不能的,下面这篇文章主要给大家介绍了关于用Python提取PPT中图片的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01

最新评论