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

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

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

linux 平台安装方法一

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

1. 下载驱动包源码

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

2. 解压驱动包

  1. unzip python-126594-20201027.zip

3. 编译驱动包

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

linux 平台安装方法二

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

1.下载驱动包源码

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

2.解压驱动包

  1. unzip python-126594-20201027.zip

3.安装gcc

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

  1. yum install gcc

4.设置环境变量

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

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

  1. vi /etc/profile
  2. // 加入如下配置
  3. export DM_HOME=/home/dmdba/dmdbms
  4. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
  5. export PATH=$DM_HOME/bin:$PATH
  6. source /etc/profile

如果不设置LD_LIBRARY_PATH,会报错:

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

5. 复制文件

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

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

image.png

6.编译驱动包

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

如果报错Python.h 没有那个文件或者目录
image.png
然后执行

  1. python setup.py install

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

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

image.png

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

编写测试代码

方法一

  1. [root@VM-24-17-centos dmPython]# pip3 list
  2. Package Version
  3. ---------- -------
  4. dmPython 2.3
  5. [root@VM-24-17-centos dmPython]# python3
  6. Python 3.7.3 (default, Mar 14 2022, 19:41:54)
  7. [GCC 8.5.0 20210514 (Red Hat 8.5.0-4)] on linux
  8. Type "help", "copyright", "credits" or "license" for more information.
  9. >>> import dmPython
  10. ## 不报错就提示成功

方法二

vi testdm.py

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

然后执行

  1. python test.py

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

image.png

Q&A

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

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

  1. yum install python-devel
  2. //python3
  3. yum install python3-devel

2. 安装的环境变量(备份)

  1. [root@VM-24-17-centos dmPython]# vim ~/.bash_profile
  2. PATH=$PATH:$HOME/bin
  3. export PATH
  4. export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/dmdbms/bin"
  5. export DM_HOME="/opt/dmdbms"
  6. export PATH=$PATH:/data/opt/bin
  7. PATH=$PATH:$HOME/bin:/usr/local/python3/bin
  8. export PATH

3.python的前置环境 yun源

  1. yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
  2. yum install libffi-devel -y
  3. yum install gcc -y