Docker笔记-搭建达梦Python环境(dmPython + SQLAlchemy)

背景

达梦提供的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镜像,再进入镜像

docker pull centos:centos7
docker run -it centos:centos7 /bin/bash

② 安装gcc、perl、openssl、python3环境;

安装gcc、zlib、make、wget

yum -y install gcc
yum -y install zlib*
yum -y install make
yum -y install wget

安装perl

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

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

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目录。

docker cp dm_python/ <容器ID>:/root

④ 修改对应的环境变量(安装dmPython时才不会报错);

vi ~/.bashrc     

添加:

export DM_HOME=/root/dm_python
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
export PATH=$PATH:$HOME/bin:$DM_HOME/bin          

最后:

source ~/.bashrc

⑤ 按照官方文档搭建dmPython:

cd /root/dm_python/drivers\python\dmPython
python3 setup.py install

测试脚本参考:

#!/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:

pip install SQLAlchemy==1.3.23
cd /root/dm_python/drivers/python/sqlalchemy
python3 setup.py install

提示成果即可。

⑦ 将搭建的好的docker环境commit。

在主机(非docker环境)启动一个shell,查看下当前运行的docker

docker ps -a

找到运行的镜像,打包成新镜像

docker commit <容器ID> 新的镜像名

这样达梦的Python镜像镜像就弄好了。运行时用/bin/python3即可

### 使用SQLAlchemy连接达梦数据库 为了通过SQLAlchemy访问达梦数据库,需确保已安装必要的库和工具。具体来说,dmPython 和 `sqlalchemy_dm` 是必需组件,前者充当DBAPI接口,后者提供特定于达梦数据库的SQLAlchemy方言支持[^1]。 #### 安装依赖包 首先,应当安装 SQLAlchemy 库,这可以通过pip命令完成: ```bash pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple ``` 接着,还需分别安装 dmPython 及 `sqlalchemy_dm` 来获取对达梦数据库的支持[^2]。 #### 创建引擎并建立连接 创建用于与达梦数据库交互的SQLAlchemy引擎实例时,应指定正确的URL字符串格式如下所示: ```python from sqlalchemy import create_engine engine = create_engine('dm_python+dm://username:password@host:port/database') ``` 上述代码片段中的 URL 参数需要替换为实际使用的用户名 (`username`)、密码(`password`)、主机地址(`host`)、端口号(`port`)以及目标数据库名称(`database`)。这里采用的是 `dm_python+dm` 方言来指明使用 dmPython 作为底层驱动程序。 #### 验证连接有效性 可以执行简单的查询测试以确认配置无误: ```python connection = engine.connect() try: result = connection.execute("SELECT VERSION()") for row in result: print(f"Database version is {row}") finally: connection.close() ``` 这段脚本尝试读取当前所连数据库版本信息,并将其打印出来;如果能够成功输出,则说明设置正确有效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值