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: |
原因是: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:\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.
>>> >>> 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()
>>> [(‘tiger’, ‘python’)] >>> cursor.close() >>> conn.close() |
注意2.7.5版本可以直接用values显示结果,3.9.6版本需要print打印,直接values报错。
更多资讯请上达梦技术社区了解:https://eco.dameng.com