猿创征文|python连接操作达梦数据库

CSDN话题挑战赛第2期
参赛话题:大数据技术分享

Python 数据库接口

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

编译安装 DM 驱动

获取达梦 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]#
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张飞的猪大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值