MyEMS 开源能源管理系统核心代码解读 013

离线表数据文件计算方法:myems/myems-normalization/offlinemeter.py
代码链接:https://gitee.com/myems/myems/blob/master/myems-normalization/offlinemeter.py?sessionid=-87551802
本期解读:
离线表数据文件计算方法:myems/myems-normalization/offlinemeter.py
源代码请点击‘阅读原文’链接
这段代码是一个用于处理离线表数据的 Python 脚本,主要功能是从数据库中获取新的离线表文件,解析这些文件中的数据,然后将数据存储到另一个数据库中。整个过程分为四个步骤:
获取所有状态为'new'的离线表文件:这一步骤通过连接到 MyEMS 历史数据库,查询状态为'new'的离线表文件,并将这些文件的信息(包括文件 ID、文件名和文件对象)保存到一个列表中。遍历每个新文件,读取单元格的值并存储数据到能源数据列表:对于列表中的每个文件,脚本会将文件对象写入本地文件,然后使用 openpyxl 库加载工作簿。接着,脚本会遍历工作簿中的行,读取表 ID、表名称和日期时间数据,将这些数据存储到一个字典中。将能源数据插入或更新到能源数据库中的离线表小时表:在这一步骤中,脚本首先验证表 ID 是否有效,然后检查数据的有效性(比如数据的范围是否在预设的低限和高限之间)。如果数据有效,脚本会连接到 MyEMS 能源数据库,并删除可能存在的旧数据,然后插入新的小时数据。更新文件状态为'done'或'error':最后,脚本会更新原始文件的状态,标记为'done'表示处理成功,或者'error'表示处理过程中出现错误。整个脚本在一个无限循环中运行,每处理完一批文件后,会暂停一段时间(例如 5 分钟),然后再次开始处理新的文件。脚本还包括了错误处理机制,比如在数据库连接失败或数据处理过程中遇到错误时,会记录错误信息并暂停一段时间后重试。
评论