🔥 前言:在国产化替代浪潮下,国产麒麟操作系统凭借安全、自主、可控的优势,广泛应用于政务、军工、金融等核心领域,搭配达梦数据库(国产数据库标杆),成为国产化IT架构的核心组合。Python 作为数据处理、自动化运维的主流语言,与达梦数据库的结合需求日益增多。
本文基于 国产麒麟操作系统真实生产环境实测验证,完整记录 dmPython 安装、环境变量永久配置、Python 脚本执行全流程,帮你一次性避坑,快速实现 Python 与达梦数据库的稳定连接,新手也能轻松上手!
📌 实验环境
• 操作系统:银河麒麟Kylin10 SP3
• 数据库:达梦数据库 8(国产适配版,适配麒麟系统)
• 数据库安装路径:/dm/dmdbms(默认路径,可替换为实际安装路径)
• Python 版本:Python 3.8+(麒麟系统自带或手动安装,兼容3.7-3.10,建议使用系统自带Python避免兼容性问题)
• 驱动:dmPython(达梦自带,无需额外下载,已适配麒麟系统,无需修改源码)
dmPython 是 C 语言扩展包,编译安装必须依赖 gcc 和 Python 开发包,麒麟系统需优先使用 麒麟官方源 安装(避免第三方源导致的适配问题),否则会出现编译失败、依赖缺失等报错!
#银河麒麟Kylin10 SP3通用命令(优先推荐)
sudo yum install gcc python3-devel -y
#若麒麟系统使用 apt 包管理器(部分桌面版/定制版),执行以下命令
sudo apt install gcc python3-dev -y
#补充:若提示源无法找到,可切换麒麟官方源后重新执行(国产化系统专属注意)
#sudo yum config-manager --set-enabled kylin-iso (根据自身系统源配置调整)
⚠️ 重点提醒:90% 的报错都源于环境变量配置不当,比如 libdmdpi.so 找不到、cannot locate an Dameng software,麒麟系统按以下步骤配置,重启服务器也不会失效,完全贴合国产化系统的动态库加载规则!
sudo vi /etc/profile
export PATH=/usr/bin:$PATH
#达梦数据库环境变量(核心配置,适配麒麟系统动态库加载规则)
export DM_HOME=/dm/dmdbms
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
export PATH=$DM_HOME/bin:$PATH
source /etc/profile
echo $DM_HOME # 应输出 /dm/dmdbms(与达梦实际安装路径一致)
echo $LD_LIBRARY_PATH # 应包含 /dm/dmdbms/bin(动态库路径)
python3 -V # 应输出 Python 3.8+ 版本(验证Python环境)所有命令均正常输出,无空值、无报错,即环境变量配置成功。
第三步:编译安装 dmPython
dmPython 源码已内置在达梦安装目录中,无需额外下载,麒麟系统无需修改任何源码,直接进入目录编译安装即可,步骤如下:
# 进入 dmPython 驱动目录(达梦默认路径,适配麒麟系统)
cd /dm/dmdbms/drivers/python/dmPython
#编译安装(麒麟系统无需额外加参数,权限不足时添加 --user)
python3 setup.py install
# 权限不足时执行(避免修改麒麟系统全局权限,更安全)
# python3 setup.py install --user
✅ 出现 Finished processing dependencies for dmPython 即安装成功!
麒麟系统专属验证安装:
python3 -c "import dmPython;
print('dmPython 安装成功,适配麒麟系统')"无报错、正常输出提示,即 dmPython 安装成功,且适配当前麒麟系统。
创建测试文件 dm_test.py,复制以下代码(替换数据库账号、密码为实际信息,适配麒麟系统达梦数据库连接规则):
import dmPython
def dm_connect_test():
try:
# 连接达梦数据库(适配麒麟系统,替换为你的账号、密码、地址)
conn = dmPython.connect(
user='SYSDBA',
password='SYSDBA',
server='127.0.0.1',
port=5236
)
cursor = conn.cursor()
# 执行测试SQL(达梦数据库通用,适配麒麟系统部署环境)
cursor.execute("SELECT TOP 1 NAME FROM V$VERSION")
values = cursor.fetchall()
print(values)
cursor.close()
conn.close()
执行脚本(麒麟系统通用命令):
python3 dm_test.py
✅ 麒麟系统成功输出示例:连接成功!达梦数据库版本: ('DM8',) 麒麟系统下 Python 连接达梦数据库实战验证通过!
文章
阅读量
获赞
