达梦数据库python 操作手册

1、dmPython 安装

从资源中下载dmPython.zip并解压到本地

可以使用如下命令很方便地在 Windows 和 Linux 操作系统下编译并安装 dmPython :

//进入到setup.py所在的源码目录,执行以下命令:

python setup.py install

dmPython接口和dm_svc.conf中功能一致的参数

dmPython 参数dm_svc.conf 参数
login_timeoutCONNECT_TIMEOUT
compress_msgCOMPRESS_MSG
ssl_pathSSL_CONFIG
ssl_pwdSSL_CONFIG
rwseparateRW_SEPARATE
rwseparate_percentRW_PERCENT
local_codeCHAR_CODE
lang_idLANGUAGE

python 连接 dm 方法:

dmPython.connect(*args, **kwargs)

连接属性

关键字描述是否必填
user登录用户名,默认 SYSDBA
password登录密码,默认 SYSDBA
dsn包含主库地址和端口号的字符串,格式为“主库地址:端口号”
host/server主库地址,包括 IP 地址、localhost 或者服务名,默认 localhost,注意 host 和 server 关键字只允许指定其中一个,含义相同
port端口号,服务器登录端口号,默认 5236
access_mode连接的访问模式,默认为读写模式
autoCommitDML 操作是否自动提交,默认 TRUE
connection_timeout执行超时时间(s),默认 0 不限制
login_timeout登录超时时间(s),默认为 5
txn_isolation事务隔离级,默认使用服务器的隔离级
app_name应用程序名
compress_msg消息是否压缩,压缩算法加载成功时为 TRUE,否则 FALSE
use_stmt_pool是否开启语句句柄缓存池,默认 TRUE
ssl_pathSSL 证书所在的路径,默认为空
ssl_pwdSSL 加密密码,只允许在连接前设置,不允许读取
mpp_login是否以 LOCAL 方式登录 MPP 系统,默认 FALSE 以 GLOBAL 方式登录 MPP 系统
ukey_nameUKEY 登录验证的 UKEY 名,只允许在连接前设置,不允许读取
ukey_pinUKEY 登录验证时的 UKEY 密钥,只允许在连接前设置,不允许读取
rwseparate是否启用读写分离方式,默认为 FALSE
rwseparate_percent读写分离比例(%),默认为 25
cursor_rollback_behavior回滚后游标的状态,默认为不关闭游标
lang_id错误消息的语言,默认为中文
local_code客户端字符编码方式,默认当前环境系统编码方式 取值如下:1:PG_UTF8、2:PG_GBK、3:PG_BIG5、4:PG_ISO_8859_9、5:PG_EUC_JP、6:PG_EUC_KR、7:PG_KOI8R、8:PG_ISO_8859_1、9:PG_SQL_ASCII、10:PG_GB18030
cursorclass取值 dmPython.DictCursor 时,结果集为字典类型;取值为 dmPython.TupleCursor 为列表类型,默认为列表类型
schema连接默认模式。未设置时,模式为登录用户的默认模式
shake_crypto客户端传输加密算法所在的加密引擎名
例子:
import dmPython
 
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost',
port=5236, autoCommit=True,cursorclass=dmPython.DictCursor)


roperties = { 'user' : 'SYSDBA', 'password' : 'SYSDBA', 'server' : '127.0.0.1',
'port' : 5236, 'autoCommit' : True, }
 
conn = dmPython.connect(**properties)

达梦数据库SQL查询报错不是 GROUP BY 表达式解决方法

报错信息:
-4080: 第1 行附近出现错误:
不是 GROUP BY 表达式
解决办法1
##达梦支持灵活的处理方式,可以直接在查询中加hint参数。
/*+ GROUP_OPT_FLAG(1)*/ select  * from table group by name;
解决办法2
#也可以修改dm.ini参数GROUP_OPT_FLAG=1,动态,会话级参数,不用重启数据库。
select para_name,para_value,file_value from v$dm_ini where para_name='GROUP_OPT_FLAG';
sp_set_para_value(1,'GROUP_OPT_FLAG',1);
select * from table group by name;
解决办法3
#达梦还可以配置兼容参数,COMPATIBLE_MODE=4,静态参数,需要重启数据库后生效!
sp_set_para_value(2,'COMPATIBLE_MODE',4);
select para_name,para_value,file_value from v$dm_ini where para_name='COMPATIBLE_MODE';
!!注意修改后需要重启数据库!!
select * from table group by name;

GROUP BY注意事项

使用 GROUP BY 要注意以下问题:
1.在 GROUP BY 子句中的每一列必须明确地命名属于在 FROM 子句中命名的表的一列。分组列的数据类型不能是多媒体数据类型;
2.分组列不能为集函数表达式或者在 SELECT 子句中定义的别名;
3.当分组列值包含空值时,则空值作为一个独立组;
4.当分组列包含多个列名时,则按照 GROUP BY 子句中列出现的顺序进行分组;
5. GROUP BY 子句中至多可包含 255 个分组列; 6. ROLLUP\CUBE\GROUPING SETS 组合不能超过 9 个。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值