news 2026/2/26 13:12:19

学习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/2/3 23:24:23

3个实战场景解密:如何用mkcert彻底告别本地开发的安全警告

3个实战场景解密:如何用mkcert彻底告别本地开发的安全警告 【免费下载链接】mkcert A simple zero-config tool to make locally trusted development certificates with any names youd like. 项目地址: https://gitcode.com/GitHub_Trending/mk/mkcert 作为…

作者头像 李华
网站建设 2026/2/24 16:54:51

AI艺术创作避坑指南:印象派工坊常见错误

AI艺术创作避坑指南:印象派工坊常见错误 1. 项目背景与核心价值 随着AI在创意领域的不断渗透,越来越多的开发者和艺术爱好者开始尝试使用技术手段实现照片到艺术画作的自动转化。然而,大多数AI风格迁移方案依赖深度学习模型,如S…

作者头像 李华
网站建设 2026/2/22 12:56:40

Cap开源录屏工具终极指南:3步打造专业级录制体验

Cap开源录屏工具终极指南:3步打造专业级录制体验 【免费下载链接】Cap Effortless, instant screen sharing. Open-source and cross-platform. 项目地址: https://gitcode.com/GitHub_Trending/cap1/Cap 还在为寻找一款真正免费、简单易用的录屏工具而烦恼吗…

作者头像 李华
网站建设 2026/2/21 5:12:27

AI视频智能解析工具终极指南:从入门到精通完整教程

AI视频智能解析工具终极指南:从入门到精通完整教程 【免费下载链接】BibiGPT-v1 BibiGPT v1 one-Click AI Summary for Audio/Video & Chat with Learning Content: Bilibili | YouTube | Tweet丨TikTok丨Dropbox丨Google Drive丨Local files | Websites丨Podc…

作者头像 李华
网站建设 2026/2/20 12:17:09

RS485硬件连接详解:从端子到终端电阻的完整指南

RS485硬件连接实战指南:从接线到终端电阻的每一个细节在工业现场,你是否遇到过这样的问题——设备明明通电正常,Modbus地址也设对了,可通信就是时断时续?示波器一抓波形,满屏振铃和过冲,像是信号…

作者头像 李华
网站建设 2026/2/24 14:43:54

AList多文件批量操作终极指南:从入门到精通完整教程

AList多文件批量操作终极指南:从入门到精通完整教程 【免费下载链接】alist alist-org/alist: 是一个基于 JavaScript 的列表和表格库,支持多种列表和表格样式和选项。该项目提供了一个简单易用的列表和表格库,可以方便地实现各种列表和表格的…

作者头像 李华