news 2026/4/27 12:11:27

学习python调用dmpython库获取达梦数据库模式信息的基本方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习python调用dmpython库获取达梦数据库模式信息的基本方式

采用dmpython库连接达梦数据库,通过以下查询方式获取某一schema的所有表信息,然后获取数据库表的数据量、占用空间及实际大小:
1)查询表dba_tables获取指定schema的所有数据库表;
2)通过select count(1)查询每张表中的数据条数;
3)通过SELECT TABLE_USED_SPACE查询每张表的占用数据页数;
4)通过SELECT TABLE_USED_PAGES查询每张表的实际使用数据页数;
5)通过查询表V$DM_INI获取数据页数的大小。

基于上述查询方式获取指定模式的数据库表信息,并将表信息以字典和元组形式保存,最终序列化到本地json文件内,主要程序如下所示:

importdmPythonimportjson queryresult={}schemaname='SCHOOL'# 创建连接conn=dmPython.connect(server="127.0.0.1",port=5236,user="XXXXXX",password="XXXXXXXXX",schema=schemaname)# 执行SQL查询cursor=conn.cursor()cursor.execute("select TABLE_NAME from dba_tables where owner='SCHOOL'")tables=cursor.fetchall()fortableintables:tablename=str(table[0])# 获取表中数据总数cursor.execute("select count(1) from "+str(tablename))rowcount=cursor.fetchone()# 获取表占用空间 KBcursor.execute("SELECT TABLE_USED_SPACE( '"+schemaname+"', '"+str(tablename)+"') * PARA_VALUE / 1024 FROM V$DM_INI WHERE PARA_NAME = 'GLOBAL_PAGE_SIZE'")tabletotalsize=cursor.fetchone()# 获取表使用空间 KBcursor.execute("SELECT TABLE_USED_PAGES( '"+schemaname+"', '"+str(tablename)+"') * PARA_VALUE / 1024 FROM V$DM_INI WHERE PARA_NAME = 'GLOBAL_PAGE_SIZE'")tableusedsize=cursor.fetchone()queryresult[tablename]=(rowcount[0],int(tabletotalsize[0]),int(tableusedsize[0]))# 关闭连接cursor.close()conn.close()savename='tableinfo.json'print(queryresult)save_data={"dict_count":len(queryresult),"data":{key:list(value)forkey,valueinqueryresult.items()}}withopen(savename,'w',encoding='utf-8')asf:json.dump(save_data,f,indent=4,ensure_ascii=False)

运行上述程序,保存第一次的数据库表信息,然后向数据库表中插入数据,再次运行程序保存第二次数据,如下图所示,可以看出前后两次的数据库表变化,后续学习并测试如何通过程序自动比较前后两次的数据库表信息变化。

参考文献:
[1]https://eco.dameng.com/community/post/20241218072309WHQAOUSCT4WRAEQYOX
[2]https://vip.kingdee.com/knowledge/616295238575048448?productLineId=8&isKnowledge=2&lang=zh-CN

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 0:40:43

NotaGen最佳实践:生成高质量音乐的参数组合

NotaGen最佳实践:生成高质量音乐的参数组合 1. 引言 在AI音乐生成领域,如何通过合理配置模型参数与风格选项来稳定输出高质量、符合古典音乐规范的作品,是当前研究和应用中的关键挑战。NotaGen作为基于大语言模型(LLM&#xff0…

作者头像 李华
网站建设 2026/4/26 0:40:33

Next AI Draw.io:用AI绘图工具5分钟创建专业图表的完整指南

Next AI Draw.io:用AI绘图工具5分钟创建专业图表的完整指南 【免费下载链接】next-ai-draw-io 项目地址: https://gitcode.com/GitHub_Trending/ne/next-ai-draw-io 在传统图表绘制中,你是否曾为繁琐的手动操作而苦恼?从选择模板到调…

作者头像 李华
网站建设 2026/4/25 17:32:35

opencode国际化支持:多语言界面与文档生成方案

opencode国际化支持:多语言界面与文档生成方案 1. 引言 随着全球开发者对AI编程助手需求的不断增长,本地化与国际化能力已成为开源工具能否广泛落地的关键因素之一。OpenCode 作为2024年迅速崛起的终端优先 AI 编程助手框架,凭借其“任意模…

作者头像 李华
网站建设 2026/4/25 21:52:50

SweetAlert2终极指南:如何用现代化弹窗提升用户体验

SweetAlert2终极指南:如何用现代化弹窗提升用户体验 【免费下载链接】sweetalert2 项目地址: https://gitcode.com/gh_mirrors/swe/sweetalert2 SweetAlert2是一款革命性的JavaScript弹窗库,专为追求极致用户体验的现代Web应用而设计。作为传统浏…

作者头像 李华
网站建设 2026/4/23 16:40:04

InvenTree:企业级开源库存管理系统的智能化革命

InvenTree:企业级开源库存管理系统的智能化革命 【免费下载链接】InvenTree Open Source Inventory Management System 项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree 在当今竞争激烈的商业环境中,高效的库存管理已成为企业运营的…

作者头像 李华
网站建设 2026/4/25 13:37:00

通义千问2.5-7B企业试用方案:零成本评估,按需扩容

通义千问2.5-7B企业试用方案:零成本评估,按需扩容 你是不是也遇到过这样的情况?公司想上AI大模型项目,CTO让你评估一下通义千问这类主流大模型的商用价值,但又不想一开始就投入几十万买GPU服务器、请专家团队部署。钱…

作者头像 李华