dmpython安装

  • Post author:
  • Post category:python


dmPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口。dmPython 实现这些 API,使 Python 应用程序能够对 DM 数据库进行访问。


1.linux下安装dmpython

操作系统版本:

[root@dca dmPython.egg-info]# cat /etc/redhat-release

CentOS Linux release 7.6.1810 (Core)

数据库版本:

SQL> select * from v$version;

LINEID     BANNER

———- ————————-

1          DM Database Server 64 V8

2          DB Version: 0x7000c

python版本

[root@dca dmPython.egg-info]# python -V

Python 2.7.5

添加环境变量

[root@dca ~]# vi .bash_profile

export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/dm/dmdbms/bin”

export DM_HOME=”/dm/dmdbms”

安装dmPython

数据库安装好后,dmPython包位于/dm/dmdbms/drivers/python/dmPython

[root@dca ~]#  cd /dm/dmdbms/drivers/python/dmPython/

[root@dca dmPython]#  python setup.py install

连接数据库

[root@dca ~]# python

Python 2.7.5 (default, Nov 16 2020, 22:23:17)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2

Type “help”, “copyright”, “credits” or “license” for more information.

>>> import dmPython

open fail! path:./libcrypto.so

–连接数据库

>>> conn=dmPython.connect(user=’SYSDBA’,password=’123456789′,server= ‘LOCALHOST’,port=5236)

–建立游标

>>> cursor = conn.cursor()

–查询

>>> cursor.execute(‘select * from  u1’)

<__builtin__.DmdbCursor on <dmPython.Connection to SYSDBA@LOCALHOST:5236>>

>>> values = cursor.fetchall()

>>> values

[(11L, datetime.date(1991, 9, 5), ‘cccc’)]

–关闭游标

>>> cursor.close()

–关闭查询

>>> conn.close()


2.windows下安装dmpython

操作系统

windows server 2016 Datacenter

数据库版本

SQL> select * from v$version;

行号       BANNER

———- ————————-

1          DM Database Server 64 V8

2          DB Version: 0x7000c

python版本

C:\Users\Administrator>python -V

Python 3.9.6

添加环境变量

将如下两个路径,加入到PATH

安装

打开cmd进入D:\dmdbms\drivers\python\dmPython执行如下命令

D:\dmdbms\drivers\python\dmPython>python setup.py install

这里有会有一个报错,提示需要安装Microsoft Visual C++ 14.0或者更高版本。这里可以通过“visualcppbuildtools_full.exe”在线安装,但是可能会出现“安装包丢失或损坏”。可以下载离线安装包“solved_packageMissInInstalling_mu_visual_cpp_build_tools_2015_update_3_x64_dvd_dfd9a39c.iso”解压后安装即可。

安装后导入dmPython模块有如下报错:

C:\Users\Administrator>python

Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32

Type “help”, “copyright”, “credits” or “license” for more information.

>>> import dmPython

Traceback (most recent call last):

File “<stdin>”, line 1, in <module>

ImportError:



DLL load failed while importing dmPython: 找不到指定的模块



原因是:Python 3.8 变更了 Windows 下动态链接库 (DLL) 的加载规则。 新的规则提高了安全性,默认情况下仅能从可信的位置(Trusted Locations)加载 DLL 依赖,一定程度上避免诸如 DLL 劫持之类的安全风险。

此时需要将DLL文件拷贝到搜索路径

>>> import sys

>>> sys.path

[”, ‘D:\\dmdbms\\drivers\\python\\dmPython’, ‘D:\\python\\Python39\\python39.zip’, ‘D:\\python\\Python39\\DLLs’, ‘D:\\python\\Python39\\lib’, ‘D:\\python\\Python39’, ‘D:\\python\\Python39\\lib\\site-packages’, ‘



D:\\python\\Python39\\lib\\site-packages\\dmpython-2.3-py3.9-win-amd64.egg



‘]

将D:\dmdbms\drivers\dpi下的所有文件,拷贝到sys.path的最后一个目录下面。拷贝到其他目录仍然会报错。

拷贝后再次导入

C:\Users\Administrator>python

Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32

Type “help”, “copyright”, “credits” or “license” for more information.

>>>



import dmPython


>>> conn=dmPython.connect(user=’SYSDBA’,password=’SYSDBA’,server= ‘LOCALHOST’,port=5236)

>>> cursor = conn.cursor()

>>> cursor.execute(‘select * from  t1’)

<builtins.DmdbCursor on <dmPython.Connection to SYSDBA@LOCALHOST:5236>>

>>> values = cursor.fetchall()

>>>



print(values)


[(‘tiger’, ‘python’)]

>>> cursor.close()

>>> conn.close()

注意2.7.5版本可以直接用values显示结果,3.9.6版本需要print打印,直接values报错。

更多资讯请上达梦技术社区了解:https://eco.dameng.com



版权声明:本文为sinat_32856657原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。