参考文献 https://eco.dameng.com/docs/zh-cn/app-dev/python-python.html https://eco.dameng.com/docs/zh-cn/start/python-development.html
概要
DMPython
dmPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口 dmPython 实现这些 API,使 Python 应用程序能够对 DM 数据库进行访问
我的理解是: dmPython是python的第三方库,提供了一些访问DM 数据库的模块和方法(例如:python程序调用方法dmPython.connect,即可连接DM 数据库)
DM DPI
dmPython 通过调用 DM DPI 接口完成 python 模块扩展 在其使用过程中,除 Python 标准库以外,还需要 DPI 的运行环境
我的理解是: dmPython与DM DPI相比,更高级更抽象(是面向Python设计的接口,类似PHP的DM PHP);DM DPI负责实现较底层的一些模块或方法(即我认为DM DPI是面向DM数据库设计的接口),故dmPython需要调用DM DPI
【综上】 我认为,PHP程序与DM数据库的交互 = PHP程序 + dmPython + DM DPI + DM数据库
环境介绍
软件 | 版本 |
---|
DM数据库 | DM8 | Python | Python 3.7.9 |
安装DM8数据库
参考: https://eco.dameng.com/docs/zh-cn/start/install-dm-linux-prepare.html https://blog.csdn.net/weixin_41709724/article/details/121101353
安装Python
Python版本如下
[root@dw1 dpi]
Python 3.7.9
检查编译工具gcc(如果没有就安装下)
[root@dw1 dpi]
libgcc-7.3.0-20190804.35.p02.ky10.x86_64
gcc-7.3.0-20190804.35.p02.ky10.x86_64
检查是否有python3-devel(如果没有就安装下)
[root@dw1 dpi]
python3-devel-3.7.9-6.ky10.x86_64
安装完 DM 数据库软件后,在安装路径下的 drivers 目录下,找到 dmPython 的驱动源码
[root@dw1 python]
[root@dw1 python]
django155 django196 django223 django317 dmPython sqlalchemy
进入到 dmPython 驱动源码目录
[root@dw1 python]
[root@dw1 dmPython]
/home/dmdba/dmdbms/drivers/python/dmPython
构建工具setup.py的应用场景 https://www.cnblogs.com/maociping/p/6633948.html
编译安装dmPython这个python包,安装到指定的python库里
[root@dw1 dmPython]
执行编译安装后,dmPython被安装到了如下目录
[root@dw1 dmPython-2.3-py3.7-linux-x86_64.egg]
/usr/local/lib64/python3.7/site-packages/dmPython-2.3-py3.7-linux-x86_64.egg
可以看到生成了dmPython.py文件
[root@dw1 dmPython-2.3-py3.7-linux-x86_64.egg]
-rw-r--r-- 1 root root 313 11月 30 15:24 dmPython.py
【注意 1】 dmPython 源码依赖 DM 安装目录中提供的 include 头文件,编译安装前需要检查是否安装 DM 数据库软件,并设置 DM_HOME 环境变量。
此处,直接在安装DM数据库的服务器中,运行Python程序
编译安装结束后使用 pip3 list 命令查看是否安装成功
[root@dw1 dmPython]
dmPython 2.3
dmPython 通过调用 DM DPI 接口完成 Python 模块扩展。在其使用过程中,除 Python标准库以外,还需要 DPI 的运行环境。
配置环境变量LD_LIBRARY_PATH,便于需要调用libdmdpi.so时,可以找到它
vi /root/.bash_profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmdba/dmdbms/drivers/dpi/
source /root/.bash_profile
使用Python与DM数据库交互
dmPython接口详解 https://eco.dameng.com/docs/zh-cn/pm/dmpython-interface.html
通过Python交互式编程,与数据库进行交互 【注意 1】 数据库的IP、端口、用户名、密码需根据实际情况进行修改
Python返回的结果与disql查询的结果相同(SYSSSO、SYSDBA、SYS、SYSAUDITOR)
SQL> select username from dba_users;
行号 username
---------- ----------
1 SYSSSO
2 SYSDBA
3 SYS
4 SYSAUDITOR
已用时间: 4.973(毫秒). 执行号:1200.
python代码如下:
python3
import dmPython
conn=dmPython.connect(user='SYSDBA',password='SYSDBA',server='192.168.8.10', port=5236)
cursor = conn.cursor()
cursor.execute('select username from dba_users')
values = cursor.fetchall()
print(values)
cursor.close()
conn.close()
达梦云适配中心: https://eco.dameng.com
|