注册
Python 连接达梦数据库
专栏/金的探索记录/ 文章详情 /

Python 连接达梦数据库

2021/03/09 5659 3 2
摘要 Python 连接达梦数据库

文档目录 drivers 下有 python/dmPython 目录。

按照 README 安装

linux 平台安装方法一(先安装 DM 数据库):

1、解压 dmPython.tar.gz

tar -zxvf dmPython.tar.gz

2、运行以下命令

cd dmPython
python setup.py install

linux 平台安装方法二(没有安装 DM 数据库)

1、解压 dmPython.tar.gz

tar -zxvf dmPython.tar.gz

2、运行以下命令

cd dmPython

3、设置 DM_HOME 环境变量为某个目录,假定为 /opt/dmdbms

export DM_HOME=/opt/dmdbms

4、把 libdmdpi.so 拷贝(从其他安装过 DM 数据库的相同操作系统的机器上拷贝)到 $DM_HOME 目录。

5、把 include 目录拷贝到 $DM_HOME 目录下。

cp -r ./include $DM_HOME/

6、运行以下命令

python setup.py install

其他可能有帮助的信息

  • windows 平台生成安装包 (exe)
    python setup.py bdist_wininst

  • LINUX 平台生成安装包 (rprm)
    python setup.py bdist_rpm

若安装过程中出现依赖问题,则:

rpm -ivh file.rpm --nodeps
  • linux 安装命令
rpm -ivh dmPython-1.1-7.1-py26-1.x86_64.rpm --nodeps
  • linux 卸载命令
rpm -e dmPython-1.1-1.x86_64
  • 源码直接安装(不分平台)
python setup.py install
  • 64 位平台安装时,需增加 DM 64 宏。

安装脚本 setup.py 中全局变量 defineMacros 使用 defineMacros = [(‘DM64’, None),];否则,使用 defineMacros = []。

平台执行上述命令时,需先进行如下准备工作:

定义环境变量 DM_HOME,并将其添加到环境变量 PATH 中。

  • 若为源码直接编译,则指向源码目录(如:E:\dm7src\dev2),如 DM_HOME=E:\dm7src\dev2;
  • 若为安装版本,则指定为 bin 的上层目录,如 DM_HOME=C:\dmdbms。

WIN 平台可能遇到如下问题

Unable to find vcvarsall.bat

解决方案如下:

  • 进入当前使用 python 安装目录中 Lib/distutils,找到文件 msvc9compiler.py,使用 UE 或者其他文本编辑器将其打开。
  • 在文件msvc9compiler.py中找到:vc_env = query_vcvarsall(VSERSION,plat_spec)
  • 根据使用本机安装的 VS 的版本号,对应安装目录(如:C:\Program Files\Microsoft Visual Studio 10.0),则改为:vc_env = query_vcvarsall(10,plat_spec)

WIN 平台执行 import dmPython 时,可能会遇到如下问题:

import dmPython
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: 找不到指定的模块

此时因为 dmPython 找不到动态库 dpi,需要到 dpi 所在目录执行或者配置环境变量指向 dpi 所在目录;若为安装版执行,则直接配置环境变量指向 bin 目录即可。

linux 为例:export LD_LIBRARY_PATH=/mnt/dm7Src/dev2/build/linux/linux_build/debug

实验测试

环境信息:

  • os:centos7
  • python:2.7.5
  • db:dm7

linux 下安装

cd /d07/dmdbms/drivers/python/dmPython
python setup.py install

报错:

1.png

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

yum install python-devel

连接数据库测试

编辑脚本:

import dmPython
conn = 
dmPython.connect(user='SYSDBA',password='SYSDBA',server='192.168.56.97',port=5236)
cursor = conn.cursor()
cursor.execute('create table pythontest(id int)')
cursor.execute('insert into pythontest values(?)',1)
cursor.execute('select id from pythontest')
sets = cursor.fetchall()
print sets
cursor.close()
conn.close()

返回结果:

[root@dm7 ~]# python test.py 
[(1L,)]

windows 下安装

python:2.7.17

python setup.py bdist_wininst

提示缺少 vc++ 9.0 需要下载 VCForPython27.msi 安装 VCForPython27.msi 后,再安装成功。

连接数据库测试

import dmPython 报错找不到

ImportError: No module named dmPython

添加环境变量:(指定 dmPython.pyd 文件路径)

  • 变量名:PYTHONPATH
  • 值:F:\dmdbms\drivers\python\dmPython\build\lib.win-amd64-2.7
import dmPython
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: 找不到指定的模块。

添加环境变量:(指定 dmdpi.dll 文件路径)

  • 变量名:PATH
  • 值:F:\dmdbms\bin
F:\dmdbms\bin>python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import dmPython
>>> conn = dmPython.connect('SYSDBA/SYSDBA@192.168.56.97:5236')
>>> cur = conn.cursor()
>>> cur.execute('select id from pythontest')
<__builtin__.DmdbCursor on <dmPython.Connection to SYSDBA@192.168.56.97:5236>>
>>> print cur.fetchall()
[(1L,)]
>>> cur.close()
>>> conn.close()
>>>
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服