dmPython
达梦为适配 python 开发出 dmPython 接口,在使用时还需要需要配置 DPI 运行环境。
1 连接方式
dmPython提供两种连接方式,不仅支持 key=value 形式传参连接,也支持连接串方式连接。连接属性主要有:user, password, dsn, hostlserver, port, schema,autocommit等等
1、conn = dmPython.connect(user='SYSDBA', password='wh17xktk!!', server='localhost',port=5236,schema='SYSDBA')
2、dmPython .connect('SYSDBA/SYSDBA@localhost:5236/SYSDBA’)
2接口
2.1 Connection对象接口
Connection.cursor():构造一个当前连接上的cursor对象,用于执行操作操作数据库的命令。
Connection.commit():手动提交当前事务。如果设置了非自动提交模式,可以调用该方法手动提交。
Connection.rollback():手动回滚当前未提交的事务。
Connection.close():关闭与数据库的连接。Connection.explan(sqI):返回指定SQL语句的执行计划。
2.2 Cursor接口
Cursor.callproc(procname,*args):调用存储过程,返回执行后的所有输入输出参数序列。
Cursor.calIfunc(funcname,*args):调用存储函数,返回存储函数执行的返回值以及所有参数值。返回序列中第一个元素为函数返回值,后面的是函数的参数值。如果存储函数带参数,则必须为每个参数键入一个值包括输出参数。
Cursor.prepare(sql):准备给定的sql语句。后续可以不指定SQL,直接调用execute。
Cursor.execute(sql【,parameters]}【,kwargsParams]):执行给定的SQL语句,给出的参数值和 SQL 语句中的绑定参数从左到右一一对应参数缺少则补None,多的则自动忽略。支持按位置动态绑定,按名称动态绑定,按位置绑定数组,按名称绑定字典等。
Cursor.executedirect(sql):执行给定的S C} L语句,不支持参数绑定。
Cursor.executemany(sql,sequence of params):对给定的SQL语句进行批量绑定参数执行。参数用各行的tuple组成的序列给定。
例如:
Seq_params=【(1,'abcdefg’),(2,'uvwxyz'}]
cursor.executemany("insert into test values(?,?)”,Seq_params}
Cursor.close():关闭Cursor对象。
Cursor.next():获取结果集的下一行,返回一行的各列值,返回类型为tuple。如果没有下一行返回None。
Cursor.fetchmany(【rows=Cursor.arraysize]):获取结果集的多行数据,获取行数为rows,默认获取行数为属性Cursor.arraysize值。
cursor.fetchall():获取结果集的所有行。返回所有行数据,返回类型为由各行数据的tuple组成的list。
Cursor. nextset():获取下一个结果集。如果不存在下一个结果集则返回None,否则返回True。
可以使用fetchXXX()获取新结果集的行值。
3、PyCharm 中 Python 操作达梦数据库
3.1、安装 dmPython。
1、进入达梦数据库安装目录下的 dmPython 目录,执行命令 python setup.py install
C:\Users\pc>e:
E:\>cd \dameng\dmdbms8\drivers\python\dmPython
E:\dameng\dmdbms8\drivers\python\dmPython>python setup.py install
2、配置 DPI 环境变量
3.3.2 PyCharm 配置连接 dm 数据库
1、点击 View 选择Tool Windows 选择 DB Browser。
2、配置连接名,描述信息,URL,用户名,密码,驱动。
点击测试,测试链接是否成功,连接测试成功后点击Apply点击Ok
连接成功后可以看到DM数据库中的信息。
3.3.3 Python操作达梦数据库
# coding:utf-8
import dmPython
try:
# 创建达梦数据库连接
conn = dmPython.connect(user='SYSDBA', password='wh17xktk!!', server='localhost',
port=5236, schema='SYSDBA')
# 创建数据库操作对象
cursor = conn.cursor()
try:
# 清空表,初始化测试环境
cursor.execute('delete from T2')
except (dmPython.Error, Exception) as err:
print(err)
try:
# 插入数据
cursor.execute("insert into T2 values(1, 'xswl'), (2, 'xswl'), (3, 'xswl'), (4, 'xswl')")
print('python: insert success!')
# 删除数据
cursor.execute("delete from T2 where id=1")
print('python: delete success!')
# 更新数据
cursor.execute("update T2 set name = 'xktk' where id = 2 or id = 4")
print('python: update success!')
# 查询数据
cursor.execute("select name from T2")
res = cursor.fetchall()
for tmp in res:
for c1 in tmp:
print c1
print('python: select success!')
except (dmPython.Error, Exception) as err1:
print (err1)
conn.close()
except (dmPython.Error, Exception) as err:
print(err)