Python dmpython 使用 DM
官方网站:https://eco.dameng.com/document-preview/dm/zh-cn/app-dev/develop-environment-prepare-python
介绍
dmPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口。dmPython 实现这些 API,使 Python 应用程序能够对 DM 数据库进行访问。
dmPython 通过调用 DM DPI 接口完成 python 模块扩展。在其使用过程中,除 Python 标准库以外,还需要 DPI 的运行环境。
Python 开发环境准备
名称 | 版本 |
---|---|
DM 数据库 | DM 8.0 及以上版本 |
Python | 3.6.8 |
dmPython | 2.3 |
dmPython 安装
安装达梦数据库
安装 dmpython 第一步:安装达梦数据库。如果不想装,可以从其他服务器复制,但是一定要复制 达梦的 bin、include、drivers
目录,并添加系统环境变量。注意:操作系统不同库文件不通用的。
因为:
使用源码安装时,dmPython 编译依赖于环境变量
DM_HOME
目录下的include
和drivers/python/dmpython
中的相关头文件,需要确保- 配置
DM_HOME
环境变量并且路径正确。 - 保证 dpi 和 dmPython 版本一致,都是 32 位或都是 64 位。
- 配置
dmPython 的运行需要使用 dpi 动态库,所以需要把 dpi 所在目录(一般为 DM 安装目录中的 bin 目录)加入系统环境变量。
如果没有安装达梦数据库,或者没有配置环境变量,会报以下各种各样的错误:
distutils.errors.DistutilsSetupError: Dameng home (/home/rwj/dmdba) does not refer to an DM8.1 installation or dmdpi library missing.
raise DistutilsSetupError("cannot locate an Dameng software " /distutils.errors.DistutilsSetupError: cannot locate an Dameng software installation
- 原因:未配置
DM_HOME
或LD_LIBRARY_PATH
环境变量
- 原因:未配置
import dmPython 时 报
ImportError: DLL load failed: 找不到指定的模块。
- 原因:没有把
D:\dmdbms\drivers\dpi
加到环境变量里面。 - 解决方案:把
D:\dmdbms\drivers\dpi
加到环境变量里面。
- 原因:没有把
Liunx 环境配置
把 DM_HOME 和 dpi 所在目录加入系统的环境变量,操作步骤如下:
1 |
|
Windows 环境
dmPython 通过调用 DM DPI 接口完成 Python 模块扩展。在其使用过程中,除 Python 标准库以外,还需要 DPI 的运行环境。所以需要配置系统环境变量,添加 DM DPI 的路径。
达梦数据库驱动
由于应用(不论什么语言开发)都需要通过对应的数据库驱动来连接数据库对数据库的数据进行操作,所以达梦提供了各种各样的驱动。
达梦数据库的驱动存放在安装的数据库软件目录下,例如:达梦安装目录为/dm/dmdbms
,则 dmPython 驱动目录在:/dm/dmdbms/drivers/python
,如下图所示:
在 Linux 下安装 dmPython
Linux 环境下安装 dmPython 还需要安装编译工具 gcc(需要预先配置 yum 源)。安装编译工具 gcc:
yum install gcc
在 Linux 下安装 dmPython 有三种方法。
* 方法一:使用达梦数据库软件自带的 dmPython 驱动包。
1. 切换到达梦软件安装目录下的 /drivers/python/dmPython 目录下
1
2
3
4
5
6
[root@RS1821 /]# cd /dm/dmdbms/drivers/python/dmPython
[root@RS1821 dmPython]# ls
Buffer.c Cursor.c Environment.c exLob.c README.txt strct.h var.c vDateTime.c vNumber.c
Buffer.h DatabaseCheck_2.7.spec Error.c exObject.c row.c tObject.c var_pub.h vInterval.c vObject.c
build dist Error.h py_Dameng.c row.h trc.c vBfile.c vLob.c vString.c
Connection.c dmPython.egg-info exBfile.c py_Dameng.h setup.py trc.h vCursor.c vlong.c
2. 执行命令进行手动安装:python setup.py install。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@dm8 dmPython]# python setup.py install
……
creating dist
creating 'dist/dmPython-2.3-py2.7-linux-x86_64.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing dmPython-2.3-py2.7-linux-x86_64.egg
Copying dmPython-2.3-py2.7-linux-x86_64.egg to /usr/lib64/python2.7/site-packages
Adding dmPython 2.3 to easy-install.pth file
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
```
* 方法二:使用驱动源码安装 dmPython,获取[达梦 python 驱动源码](https://download.dameng.com/eco/docs/python-126594-20201027.zip "python-126594-20201027.zip")并解压。
[root@RS1821 /]# unzip python-126594-20201027.zip
[root@RS1821 /]# cd python/dmPython_C/dmPython/
[root@RS1821 dmPython]# 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
1
2
3
* 方法三:也可以先生成安装文件再进行安装。有两种方式
* 生成 whl 文件,再进行安装
# 进入到 setup.py 所在的源码目录,执行以下命令:
python setup.py bdist_wheel
# 如果遇到报错invalid command 'bdist_wheel',需更新打包所需工具版本,执行命令如下:
pip install wheel
pip install --upgrade setuptools
# 生成whl文件后,在当前目录的dist文件夹下可以找到生成的whl文件,安装命令参考如下
pip install dmPython-2.4.5.whl
1
2
* 生成安装包,再进行安装
# Windows: 生成 exe 文件,然后执行 exe 文件即可安装:
## 进入到 setup.py 所在的源码目录,执行以下命令:
python setup.py bdist_wininst
# Linux: 生成 rpm 包,使用 rpm 包安装 dmPython
## 进入到 setup.py 所在的源码目录,执行以下命令:
python setup.py bdist_rpm
# 安装:
rpm -ivh dmPython-2.1-7.1-py33-1.x86_64.rpm --nodeps
# 卸载:
rpm -e dmPython-2.1-1.x86_64
1
2
3. 获取 dmPython 版本。
D:\>pip list
Package Version
----------------------------- -----------
dmPython 2.5.5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 在 Windows 下安装 dmPython
dmPython 源码依赖 DM 安装目录中提供的 include 头文件,编译安装前需要检查是否安装 DM 数据库软件,并设置 `DM_HOME` 环境变量。
1. 设置 `DM_HOME` 环境变量。
![image.png](/img/dm/1709278945-fd3ec6106093d5ff8544fdba5ce13869.png)
2. 安装编译工具 Microsoft Visual C++ Build Tools。下载可参考:[https://blog.csdn.net/zztyxd/article/details/125855681](https://blog.csdn.net/zztyxd/article/details/125855681)。
![image.png](/img/dm/1709278945-d7c047d38b12352ec9f1c874828132f6.png)
3. 安装完 DM 数据库软件后,在安装路径下的 drivers 目录下,找到 dmPython 的驱动源码。
![image.png](/img/dm/1709278945-507fbcec714b5bec15276ed60c9e5b9b.png)
4. 进入到 dmPython 驱动源码目录,编译安装 dmPython。
cd D:\dmdbms\drivers\python\dmPython
python setup.py install
```
![image.png](/img/dm/1709278945-13e1570708b008e3a1295e4452ee2c2c.png)
![image.png](/img/dm/1709278945-29b69ba59110fde7cf9044a5c10ffcfa.png)
编译安装结束后使用 pip list 命令查看是否安装成功。
![image.png](/img/dm/1709278945-11ade6264c7eed31f78109db65f91f42.png)