Windows平台下使用Python连接达梦数据库(DM8)

达梦数据库(Dameng Database,简称DM)是国产自主可控的关系型数据库,在政务、金融、能源等行业应用广泛。Python作为热门的开发语言,通过官方提供的dmPython驱动,可以轻松实现与达梦数据库的连接、查询、增删改等操作。最近在测试AI skills,准备测试一些SOP各数据库的运维场景。

本文针对Windows平台DM8版本(最常见),Python 3.6+。达梦数据库服务端不在本机。

首先,让我们了解一下Python连接达梦数据库的整体架构:

Python应用 → dmPython驱动 → DPI接口 → 达梦数据库

dmPython是达梦官方提供的基于Python DB API 2.0标准的数据库访问接口,它通过调用DPI接口完成与数据库的交互

第一步:安装达梦数据库

如果还没有安装达梦数据库,可以访问达梦云适配中心下载DM8数据库试用版进行安装

安装注意事项

  • 记住安装路径(例如:D:\dmdbms
  • 设置数据库实例端口(默认为5236)
  • 创建管理员账户和密码

这步我之前已安装数据库在Linux 服务器,不在记录。

第二步:安装Python环境

从Python官方网站下载适合Windows平台的Python安装包(推荐Python 3.7+版本)

安装建议

  • 勾选“Add Python to PATH”选项
  • 使用默认安装路径
  • 验证安装:打开CMD,输入python --version

$ python –version
Python 3.12.10

第三步:安装dmPython驱动

dmPython的安装有两种方式,推荐使用pip方式。官方有记录安装方式

因为我的Windows可以连网,使用在线模式

D:\code\oracle-compatibility-tool\testcase>pip install dmpython
Defaulting to user installation because normal site-packages is not writeable
Collecting dmpython
  Downloading dmpython-2.5.30-cp312-cp312-win_amd64.whl.metadata (7.0 kB)
Downloading dmpython-2.5.30-cp312-cp312-win_amd64.whl (7.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.8/7.8 MB 8.7 MB/s  0:00:01
Installing collected packages: dmpython

第四步:安装dm客户端

从官方下载x86平台,安装时可以取消服务端,仅安装客户端。如我是安装在d:\dmdbms, 并设置 DM_HOME 环境变量。如果不配置,加载dmPython时会提示

dmPython.DatabaseError: [CODE:-70089]加密模块加载失败

此时可能加载还会因为没有配置DPI而报错如下:

>>> import dmPython
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing dmPython: 找不到指定的模块。

第五步:复制DPI DDL文件到dmPython下

解决ImportError: DLL load failed while importing dmPython: 找不到指定的模块的问题

C:\Users\weejar>pip show dmpython
Name: dmpython
Version: 2.5.30
Summary: Python interface to Dameng
Home-page:
Author:
Author-email:
License: Python Software Foundation License
Location: C:\Users\weejar\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages
Requires:
Required-by:

把刚安装的DM客户端目录 D:\dmdbms\drivers\dpi 下的所有文件,复制到上面的Localtion目录下

C:\Users\weejar>python
Python 3.12.10 (tags/v3.12.10:0cc8128, Apr  8 2025, 12:21:36) [MSC v.1943 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import dmPython
>>> ^Z

第六步:测试案例

import dmPython
conn=dmPython.connect(user='anbob',password='anbob_1234',server= '172.20.23.49',port=5236)
cursor = conn.cursor()
cursor.execute('select username from dba_users')
values = cursor.fetchall()
print(values)
cursor.close()
conn.close()

D:\code\oracle-compatibility-tool\testcase>python example_dm.py
[('SYSAUDITOR',), ('SYSSSO',), ('SYSDBA',), ('ANBOB',), ('SYS',)]

做了一个Oracle兼容性测试工具,已基本支持大部分主流国产库,用于快速判断对oracle的兼容情况,展示一部分for达梦:

Leave a Comment