CSDN话题挑战赛第2期
参赛话题:大数据技术分享
DMPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口。DMPython 实现这些 API,使 Python 应用程序能够对 DM 数据库进行访问。
DMPython 通过调用 DM DPI 接口完成 Python 模块扩展。在其使用过程中,除 Python 标准库以外,还需要 DPI 的运行环境。
DM 数据库:DM 8.0 及以上版本
Python:Python 2.7.5
获取达梦 python 驱动源码并解压,然后运行安装程序,等待安装完成就可以了,执行情况如下面所展示的。
[root@RS1821 ssd1]# unzip python-126594-20201027.zip
[root@RS1821 ssd1]# cd python/dmPython_C/dmPython/
[root@RS1821 dmPython]# python setup.py install
...
...
...
Installed /usr/lib64/python2.7/site-packages/dmPython-2.3-py2.7-linux-x86_64.egg
Processing dependencies for dmPython==2.3
Finished processing dependencies for dmPython==2.3
[root@RS1821 dmPython]#
Python 接口登录、登出示例,首先新建一个py文件,然后导入dmPython模块,接下来就很简单了,感觉就和python连接mysql差不多,设置好用户名密码,主机,端口等,具体如下:
#!/usr/bin/python
#coding:utf-8
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost', port=51236)
cursor = conn.cursor()
print('python: conn success!')
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
执行结果如下:
[root@RS1821 pytest]# python py_conn.py
python: conn success!
[root@RS1821 pytest]#
接下来是展示达梦数据库的Python 接口增、删、改、查四个基本操作,首先还是导入dmPython模块,然后新建连接,然后调用相应的函数就可以了。示例如下:
#!/usr/bin/python
#coding:utf-8
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost', port=51236)
cursor = conn.cursor()
try:
#清空表,初始化测试环境
cursor.execute ('delete from PRODUCTION.PRODUCT_CATEGORY')
except (dmPython.Error, Exception) as err:
null
try:
#插入数据
cursor.execute ("insert into PRODUCTION.PRODUCT_CATEGORY(NAME) values('语文'), ('数学'), ('英语'), ('体育')")
print('python: insert success!')
#删除数据
cursor.execute ("delete from PRODUCTION.PRODUCT_CATEGORY where name='数学'")
print('python: delete success!')
#更新数据
cursor.execute ('update PRODUCTION.PRODUCT_CATEGORY set name = \'英语-新课标\' where name=\'英语\'')
print('python: update success!')
#查询数据
cursor.execute ("select name from PRODUCTION.PRODUCT_CATEGORY")
res = cursor.fetchall()
for tmp in res:
for c1 in tmp:
print c1
print('python: select success!')
except (dmPython.Error, Exception) as err:
print(err)
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
执行结果如下:
[root@RS1821 pytest]# python py_dml.py
python: insert success!
python: delete success!
python: update success!
语文
英语-新课标
体育
python: select success!
[root@RS1821 pytest]#
达梦数据库的Python接口绑定变量,也就是动态的传参,主要是通过"?"这个占位符来实现的,也和mysql的操作类似,基本会使用连接mysql,达梦数据库的操作也基本看一下就懂了。示例如下:
#!/usr/bin/python
#coding:utf-8
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost', port=51236)
cursor = conn.cursor()
try:
#清空表,初始化测试环境
cursor.execute ('delete from PRODUCTION.PRODUCT_CATEGORY')
except (dmPython.Error, Exception) as err:
null
try:
#插入数据
values = ('物理')
cursor.execute ("insert into PRODUCTION.PRODUCT_CATEGORY(name) values(?)", values)
print('python: insert success!')
#查询数据
cursor.execute ("select name from PRODUCTION.PRODUCT_CATEGORY")
res = cursor.fetchall()
for tmp in res:
for c1 in tmp:
print c1
print('python: select success!')
except (dmPython.Error, Exception) as err:
print(err)
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
执行结果如下:
[root@RS1821 pytest]# python py_bind.py
python: insert success!
物理
python: select success!
[root@RS1821 pytest]#