概览:从 12 个生产基地的 IoT 配置库抽取数据,生成统一配置台账(Excel)与每日变更日志(新增/删除/字段级 diff),用于审计追溯与运维排障。
面向“多基地/多实例”的 IoT 配置运营场景:从多个生产基地的关系型数据库抽取配置与字典数据,生成可检索的统一配置台账与每日变更日志(审计/追溯用)。
仓库默认以“某制造企业 / 某 IoT 平台 / 某 EMS”的匿名方式描述,示例字段/截图可按需脱敏补充。
- 多基地配置分散:同一套业务在 12 个生产基地分别维护配置,排障/核对需要跨基地查看。
- 配置变更频繁:配置可能在小时级变化,靠人工“盯”和反复拼表不可持续。
- 平台缺口:上游平台缺少“跨基地合并台账 / 每日变更追踪”这类运营能力时,需要一条轻量流水线先把结果跑出来。
- 每个基地从多张原始表(约 7 张)+ 字典表(约 8 张)抽取并加工
- 合并后每基地沉淀为 2 张“全字段”台账表(将关键字段集中在少量表内,便于筛选/联查)
- 支持跨基地汇总导出(每基地分页 + 汇总页)
- 对比“本次生成的合并结果”与“上一基准结果”
- 输出:
- 新增记录
- 删除记录
- 修改明细(字段级 diff)
- 用途:审计追溯、快速定位“哪里变了/谁改了/何时改了”(如源表存在更新时间/更新人字段则会随输出携带)
- 覆盖:12 个基地
- 资产规模:50 万+采集点,10 万+聚合关系
- 运营侧常见代价(引入本工具链前):
- 多表(≥5 张)反复
VLOOKUP拼接台账(约 10 分钟/次) - 配置可能 1 小时内变化导致台账失效,一天需要重复拼接多次
- 人工对账/肉眼盯变更,错误与遗漏概率高
- 多表(≥5 张)反复
- 引入后:
- 一键生成台账 + 自动输出每日变更日志
- 将“重复拼表 + 肉眼对比”替换为可审计的结构化结果
注:README 保持“产品/工具说明”的语气;具体数字可在私有场景中继续细化(例如日均运行耗时、单次导出行数、变更条数分布等)。
0_run_all.py:流水线编排入口(串起 1~5 脚本,并写执行日志)- 数据同步
1_copy_to_local.py:从各基地数据库同步到本地 MySQL(按配置映射)1_copy_ems_to_local.py:从某 EMS(PostgreSQL)同步到本地 MySQL(含类型映射/字段清洗)
- 数据加工
2_table_aggregator.py:按配置文件生成“汇总表”(JOIN 字典表、字段映射、基地命名等)
- 台账导出与合并
3_merge_tables.py:导出并合并“采集点/设备/数据源”等台账4_merge_calc_tables.py:导出并合并“计算逻辑/聚合关系”等台账5_Equipment Ledger Merge.py:设备台账相关额外合并处理
- 变更审计
6_daily_changelog.py:在合并结果上做每日对比,导出新增/删除/修改明细
- 工程化
0_run_all.spec:PyInstaller 打包配置(可交付给非开发同学运行)定时执行数据库文件.bat:Windows 批处理(全量更新→等待→生成变更日志)
- 抽取/同步:从各基地关系型数据库 + EMS 抽取配置与字典表 → 同步至本地 MySQL
- 加工:按字段映射与 JOIN 规则生成面向运营的“汇总表”
- 导出:将汇总表导出为 Excel 台账(按基地拆分 + 汇总合并)
- 对比:基于上次结果生成每日变更日志(新增/删除/修改)
生产凭据不进入仓库:通过本地配置文件注入连接参数(不提交任何可用账号/密码/IP)。
- Python 3.9+(Windows 环境验证较多)
- 常用依赖(按脚本 import 推断):
pandaspymysqlsqlalchemyopenpyxlxlsxwritermysql-connector-pythonpsycopg2
建议创建虚拟环境并安装依赖:
python -m venv .venv
# Windows
.\.venv\Scripts\activate
pip install pandas pymysql sqlalchemy openpyxl xlsxwriter mysql-connector-python psycopg2-binarypython 0_run_all.py运行仓库内 .bat:先全量更新并导出台账,等待文件落盘后再执行 6_daily_changelog.py 生成每日变更日志。