背景
达梦提供的C接口,dpi和java的jar包已经很好用了,想不到,来了一个用python的同事,这里就只能适应下他了,在不影响其他环境下搭建一个python的达梦环境。最后发现,python对进行达梦增删改查,还是比较简单的开发效率大于C的dpi,甚至感觉效率也不再java之下。仅仅是搞业务这块还是比较方便的,但搭建和部署,难度比C和Java复杂了很多,反正就是各有优劣吧。
思路
① 先搭建一个centos的docker;
② 安装gcc、perl、openssl、python3环境;
③ 从已有的搭建好达梦服务器上将达梦相关的bin、drivers、include拷贝到docker版centos上;
④ 修改对应的环境变量(安装dmPython时才不会报错);
⑤ 按照官方文档搭建dmPython;
⑥ 按照官方文档搭建SQLAlchemy;
⑦ 将搭建的好的docker环境commit。
最终效果如下:
具体操作
下面对每一步进行详细说明:
① 先搭建一个centos的docker;
在主机上,下载centos镜像,再进入镜像
bash
docker pull centos:centos7
docker run -it centos:centos7 /bin/bash
② 安装gcc、perl、openssl、python3环境;
安装gcc、zlib、make、wget
bash
yum -y install gcc
yum -y install zlib*
yum -y install make
yum -y install wget
安装perl
bash
cd ~
mkdir perl
cd perl
wget https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz
tar -zxvf perl-5.28.0.tar.gz
cd perl-5.28.0
./Configure -des -Dprefix=$HOME/localperl
make
make test
make install
安装openssl
bash
cd ~
mkdir openssl
cd openssl
wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz
mkdir -p usr/local/openssl
tar -zxvf openssl-1.1.1a.tar.gz
cd openssl-1.1.1a
./config --prefix=/usr/local/openssl no-zlib
make
make install
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
安装python3
bash
cd ~
mkdir python
cd python
wget http://npm.taobao.org/mirrors/python/3.7.8/Python-3.7.8.tgz
tar -zxvf Python-3.7.8.tgz
cd Python-3.7.8
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl
make
make install
③ 从已有的搭建好达梦服务器上将达梦相关的bin、drivers、include拷贝到docker版centos上;
将达梦服务器上的bin、drivers、include拷贝下来,放到新建的dm_python目录。
bash
docker cp dm_python/ <容器ID>:/root
④ 修改对应的环境变量(安装dmPython时才不会报错);
bash
vi ~/.bashrc
添加:
bash
export DM_HOME=/root/dm_python
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
export PATH=$PATH:$HOME/bin:$DM_HOME/bin
最后:
bash
source ~/.bashrc
⑤ 按照官方文档搭建dmPython:
bash
cd /root/dm_python/drivers\python\dmPython
python3 setup.py install
测试脚本参考:
bash
#!/usr/bin/python3
#coing:utf-8
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='192.168.36.1', port=5236)
cursor = conn.cursor()
print('python: conn success!')
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
⑥ 按照官方文档搭建SQLAlchemy:
bash
pip install SQLAlchemy==1.3.23
cd /root/dm_python/drivers/python/sqlalchemy
python3 setup.py install
提示成果即可。
⑦ 将搭建的好的docker环境commit。
在主机(非docker环境)启动一个shell,查看下当前运行的docker
bash
docker ps -a
找到运行的镜像,打包成新镜像
bash
docker commit <容器ID> 新的镜像名
这样达梦的Python镜像镜像就弄好了。运行时用/bin/python3即可