注册
零基础上手!用 Python3 连接达梦数据库实战教程
培训园地/ 文章详情 /

零基础上手!用 Python3 连接达梦数据库实战教程

徐志明 2026/10/26 3 0 0

一、背景介绍
在当前的应用系统国产化改造浪潮中,Python 作为一门强大的“胶水语言”,在数据处理、自动化运维及后端开发中扮演着越来越重要的角色。许多开发者在以往的开发中,习惯了使用 pymysql 或 cx_Oracle 等驱动来连接关系型数据库。当业务系统迁移到达梦数据库生态后,开发者往往面临的首要问题就是:如何快速、稳定地用 Python 连接达梦?
针对这一需求,达梦官方提供了原生的 dmPython 驱动。该驱动严格遵循 Python DB-API 2.0 规范,并且其接口设计与 cx_Oracle 非常相似。这意味着,如果您有 Oracle 或类似数据库的开发经验,迁移到达梦的开发成本极低,几乎可以实现无缝衔接。
二、驱动安装(源码编译法)
虽然通过 pip 安装驱动非常便捷,但在企业内网环境或特定的服务器架构下,使用源码编译安装往往更为稳妥和可控。以下是标准的源码安装步骤:
2.1 环境准备
在开始编译前,请确保您的 Linux 环境中已经安装了 Python3 以及 GCC 编译器。可以通过以下命令一键安装必要的依赖:
yum install python3 python3-devel gcc -y
屏幕截图 20261024 165939.png
2.2 编译安装
达梦数据库的 Python 驱动源码通常位于安装目录的 drivers/python/dmPython 路径下。进入该目录并执行安装命令:
cd /dm/dmdbms/drivers/python/dmPython
python3 setup.py install
注意事项:如果在编译过程中提示找不到 dm.h 等头文件,请检查是否完整安装了达梦的服务端开发包,或者确认 DM_HOME 环境变量是否已正确指向达梦数据库的安装根目录。
三、代码实战:查询员工表
驱动安装完成后,我们需要编写一个简单的脚本来验证数据库连接是否正常。
3.1 创建测试脚本
在 /opt/exam/ 目录下创建一个名为 test.py 的脚本文件,并填入以下完整的 Python 代码:
import dmPython

try:
# 建立数据库连接
conn = dmPython.connect(user='SYSDBA', password='SYSDBA001', server='localhost', port=5236)
cursor = conn.cursor()

# 执行查询语句
sql = "SELECT EMPLOYEE_ID, EMPLOYEE_NAME FROM HR.EMPLOYEE FETCH FIRST 10 ROWS ONLY"
cursor.execute(sql)

# 获取并打印结果
rows = cursor.fetchall()
for row in rows:
print(f"员工ID: {row[0]}, 员工姓名: {row[1]}")

except dmPython.Error as e:
print(f"数据库连接或查询发生错误: {e}")
finally:
# 确保资源被正确关闭
if 'cursor' in locals():
cursor.close()
if 'conn' in locals():
conn.close()

3.2 运行测试
保存脚本后,在终端中执行以下命令运行测试:
python3 /opt/exam/test.py
屏幕截图 20261024 165913.png
如果终端顺利输出了员工数据列表,说明您的 Python 环境已经成功打通了与达梦数据库的连接!

四、常见问题排查
在实际部署中,可能会遇到以下两个典型问题,这里提供相应的解决方案:
1.ImportError: libdmdpi.so not found 这通常是因为系统找不到达梦的动态链接库。解决方法是在 /etc/ld.so.conf 文件中加入达梦的 bin 目录路径(如 /dm/dmdbms/bin),然后执行 ldconfig 命令使配置生效。
2.中文乱码问题 如果查询出的中文字段显示为乱码,请在建立连接的参数中显式指定字符集,例如添加 charset='UTF-8' 参数,以确保客户端与服务端的编码保持一致。
五、结语
Python 连接达梦数据库的过程其实非常简单,其核心在于驱动的正确编译安装以及系统环境变量的合理配置。掌握了这些基础操作,后续的 ORM 框架集成或复杂业务开发都将水到渠成。希望这篇实战教程能帮助各位开发者快速完成国产化适配工作,享受高效、安全的国产数据库开发体验。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服