Linux(Centos) Python编译安装达梦驱动 dmPython

头像
码农笔录
2021-10-14 运维 阅读量 3990

dmPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口。

使用 Python 连接达梦数据库时需要安装 dmPython。安装完 DM 数据库软件后,在安装路径下的 drivers 目录下,可以找到 dmPython 的驱动源码,由于提供的是源码,需要自己编译安装。

安装的时候区分是否本机已经安装达梦数据库,如果本机已经安装好达梦数据库,参考第一种,如果本机没有安装,请参考第二种。

linux 平台安装方法一

注意:需要先安装 DM 数据库

1.下载驱动包源码

wget https://download.dameng.com/eco/docs/python-126594-20201027.zip 或者 curl https://download.dameng.com/eco/docs/python-126594-20201027.zip -o python-126594-20201027.zip

2.解压驱动包

unzip python-126594-20201027.zip

3.编译驱动包

cd 驱动源码解压目录python/dmPython_C/dmPython python setup.py install

linux 平台安装方法二

注意:本机没有安装 DM 数据库

1.下载驱动包源码

wget https://download.dameng.com/eco/docs/python-126594-20201027.zip 或者 curl https://download.dameng.com/eco/docs/python-126594-20201027.zip -o python-126594-20201027.zip

2.解压驱动包

unzip python-126594-20201027.zip

3.安装gcc

编译安装必须要GCC,如果没有安装请先安装

yum install gcc

4.设置环境变量

设置 DM_HOME 环境变量为某个目录,假定为 /data/publish/python/dmdbms

注意:dmPython 通过调用 DM DPI 接口完成 Python 模块扩展。在其使用过程中,除 Python标准库以外,还需要 DPI 的运行环境。

vi /etc/profile // 加入如下配置 export DM_HOME=/data/publish/python/dmdbms export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/publish/python/dmdbms/ source /etc/profile

如果不设置LD_LIBRARY_PATH,会报错:

import dmPython File "build/bdist.linux-x86_64/egg/dmPython.py", line 7, in <module> File "build/bdist.linux-x86_64/egg/dmPython.py", line 6, in __bootstrap__ ImportError: libdmdpi.so: cannot open shared object file: No such file or directory

5.复制文件
// 从其他安装过 DM 数据库的相同操作系统的机器上拷贝,或者下载我这可用的文件点击下载dpi文件

把dmserver/drivers/dpi下的所有文件复制到/data/publish/python/dmdbms

image.png

5.编译驱动包

cd 驱动源码解压目录python/dmPython_C/dmPython python setup.py install

如果报错Python.h 没有那个文件或者目录

dmPython编译报错.png

解决方法:安装 python-devel 依赖包。

yum install python-devel //python3 yum install python3-devel

然后执行

python setup.py install

编译成功的记过如图所示:

编译结果
Installed /usr/lib64/python2.7/site-packages/dmPython-2.3-py2.7-linux-x86_64.egg
Processing dependencies for dmPython==2.3
Finished processing dependencies for dmPython==2.3

image.png

可以通过 pip list查看是否安装成功

image.png

编写测试代码

vi testdm.py

#!/usr/bin/python #coding:utf-8 import dmPython try: conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='192.168.0.122', port=5236) cursor = conn.cursor() print('python: conn success!') conn.close() except (dmPython.Error, Exception) as err: print(err)

然后执行

python test.py

如果连接成功会输出conn success!

image.png