开发者

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

目录
  • 1、安装达梦数据库(dmpython)驱动
    • 一、获取驱动文件
    • 二、复制文件
    • 三、 安装驱动
  • 2、测试安装
    • 一、打开vscode
  • 3、报错解决
    • 一、连接失败: <class 'dmPython.AFUXODConnection'> returned a result with an exception set
      • 1、验证驱动完整性:
      • 2、检查依赖库
      • 3、检查数据库连接信息
    • 二、连接失败: module 'dmPython' has no attribute 'connect'
      • 1、检查关键文件是否存在
      • 2、检查驱动与Python的兼容性
    • 三、命令行中能成功连接,但IDE/VSCode中却找不到dmPython模块
      • 解决办法1:修改VSCode解释器路径
      • 解决办法:2:复制驱动到VSCode环境
  • 总结

    首先安装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并进入到当前目录

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

     

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

    然后输入

    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 = dmPandroidython.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 dandroidmPython
    
    # 检查驱动是否包含关键方法
    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)
    """

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

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

    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,进入到达梦python数据库目录的 bin 目录中    

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

    运行下面两行: 

     ls *odbc*
     ls *dmdpi*

     运行结果:

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

    重点查看是否存在这两个库文件,如果不存在可以冲其他相同环境下的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连接达梦库内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜