news 2026/6/15 13:22:02

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

作者头像

张小明

前端开发工程师

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

从本地加载之前保存的两个保存数据库表信息的json文件,将其中的数据还原回字典格式,然后取字典键的合集,依次循环查询键是否在两个字典中存在,如果都存在则比较两个字典中的元组是否相同,否则按新增或者移除数据处理,最后输出数据库表的变化信息,主要代码及运行效果如下所示:

importdmPythonimportjson tablebefore='tableinfo_old.json'tablebafter='tableinfo_new.json'withopen(tablebefore,'r',encoding='utf-8')asf:json_data=json.load(f)# 转换回字典tablebefore_data={key:tuple(value)forkey,valueinjson_data.get("data",{}).items()}withopen(tablebafter,'r',encoding='utf-8')asf:json_data=json.load(f)# 转换回字典tablebafter_data={key:tuple(value)forkey,valueinjson_data.get("data",{}).items()}changes=[]all_tables=set(tablebefore_data.keys())|set(tablebafter_data.keys())fortable_nameinall_tables:iftable_nameintablebefore_dataandtable_nameintablebafter_data:table1=tablebefore_data[table_name]table2=tablebafter_data[table_name]iftable1[0]!=table2[0]ortable1[1]!=table2[1]ortable1[2]!=table2[2]:changes.append({'table_name':table_name,'row_changed':table1[0]!=table2[0],'old_rows':table1[0],'new_rows':table2[0],'totalsize_changed':table1[1]!=table2[1],'old_size':table1[1],'new_size':table2[1],'usedsize_changed':table1[2]!=table2[2],'old_size':table1[2],'new_size':table2[2]})eliftable_nameintablebefore_data:# 表在第一个中有,第二个中没有changes.append({'table_name':table_name,'status':'removed','rows':tablebefore_data[table_name][0],'totalsize':tablebefore_data[table_name][1],'usedsize':tablebefore_data[table_name][2]})else:# 表在第二个中有,第一个中没有changes.append({'table_name':table_name,'status':'added','rows':tablebafter_data[table_name][0],'totalsize':tablebafter_data[table_name][1],'usedsize':tablebafter_data[table_name][2]})print(changes)

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

3分钟掌握手写文字识别:免费开源的终极解决方案

3分钟掌握手写文字识别:免费开源的终极解决方案 【免费下载链接】handwriting-ocr OCR software for recognition of handwritten text 项目地址: https://gitcode.com/gh_mirrors/ha/handwriting-ocr 在数字化时代,你是否曾为整理手写笔记而烦恼…

作者头像 李华
网站建设 2026/6/15 11:21:27

PCB生产流程中DFM设计的实战案例

一次失败的PCB转产,教会我如何真正“设计为制造”你有没有经历过这样的时刻?电路图完美无缺,仿真结果漂亮得像教科书;Layout布线干净利落,差分对走成艺术品。信心满满地把Gerber发给工厂,等来的却是一纸“D…

作者头像 李华
网站建设 2026/6/15 11:22:25

监控平台搭建实战:wvp-GB28181-pro设备接入与视频流管理全解析

监控平台搭建实战:wvp-GB28181-pro设备接入与视频流管理全解析 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro 在数字化安防监控领域,你是否曾经面临设备协议不统一、系统整合困难的问题&…

作者头像 李华
网站建设 2026/6/6 11:18:41

YimMenuV2终极教程:快速掌握GTA V模组开发完整指南

YimMenuV2终极教程:快速掌握GTA V模组开发完整指南 【免费下载链接】YimMenuV2 Unfinished WIP 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenuV2 还在为GTA V模组开发的高门槛而苦恼?🤔 想要轻松创建个性化的游戏体验却无…

作者头像 李华
网站建设 2026/6/15 11:27:50

Automa浏览器自动化工具:重塑你的数字工作流

Automa浏览器自动化工具:重塑你的数字工作流 【免费下载链接】automa A browser extension for automating your browser by connecting blocks 项目地址: https://gitcode.com/gh_mirrors/au/automa 在数字时代,重复性的浏览器操作已经成为工作效…

作者头像 李华
网站建设 2026/6/15 13:09:04

终极MinecraftForge材质包制作指南:解决模组兼容痛点

终极MinecraftForge材质包制作指南:解决模组兼容痛点 【免费下载链接】MinecraftForge Modifications to the Minecraft base files to assist in compatibility between mods. New Discord: https://discord.minecraftforge.net/ 项目地址: https://gitcode.com/…

作者头像 李华