MyEMS开源能源管理系统核心代码解读019
MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!
官网 :https://myems.io
MyEMS开源社区版下载:https://gitee.com/myems/myems
本期解读:
数字量数据清洗算法:myems/myems-cleaning/clean_digital_value.py
源代码链接:https://gitee.com/myems/myems/blob/master/myems-normalization/virtualmeter.py?sessionid=343534821
这段代码是一个用于清理数据库中过期数据的Python脚本。它主要用于连接到一个MySQL数据库,并删除那些超过特定时间(由配置文件中的live_in_days参数定义)的数据记录。下面是对代码的详细解析:
导入必要的库:
- time:用于处理时间相关的功能。
- datetime 和 timedelta:用于处理日期和时间的计算。
- mysql.connector:用于连接MySQL数据库。
- schedule:用于安排定时任务。
- config:一个自定义的配置模块,用于存储数据库连接信息和其他配置。
定义Job函数:
- 这个函数负责实际的数据清理工作。
- 首先尝试连接到历史数据数据库(cnx_historical),如果连接失败,则记录错误并退出。
- 计算过期时间(expired_utc),这是当前时间减去live_in_days天。
- 执行SQL删除命令,删除所有在expired_utc之前的数据。
- 如果删除过程中出现异常,则记录错误。
- 最后,无论成功或失败,都会关闭数据库连接和游标。
定义process函数:
- 这个函数用于安排和执行清理任务。
- 如果配置为调试模式(config.is_debug),则立即执行一次清理任务。
- 如果不是调试模式,则使用schedule库每8小时安排一次清理任务。
- 使用一个无限循环来持续检查并执行待处理的任务。
日志记录:
- 在整个过程中,使用logger对象来记录信息或错误,这对于监控和调试是非常有用的。
配置文件的使用:
- 脚本依赖于一个外部的配置文件(config模块),这个文件包含了数据库连接信息、是否为调试模式以及数据保留天数等配置。
总的来说,这个脚本是一个自动化的数据清理工具,用于定期删除数据库中不再需要的数据,以保持数据库的效率和可管理性。
MyEMS开源能源管理系统核心代码解读019的更多相关文章
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...
- Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备
本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...
- itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码
导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景 像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...
- 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)
腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1. Basic Paxos 算法是为 ...
- Android MVP模式 谷歌官方代码解读
Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...
- msysGit管理GitHub代码
msysGit管理GitHub代码 代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. 本篇就简单的说说通过msysGit来管理GitHub中的代码,实 ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
- Google免费的SVN服务器管理VS2010代码
原文:Google免费的SVN服务器管理VS2010代码 前言 Google免费为我们提供了代码管理的SVN服务器.首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发.这里管理代码需 ...
- spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装
导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...
- weex官方demo weex-hackernews代码解读(上)
一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...
随机推荐
- 最值得关注的2025年公众号编辑器Top 10,提升你的内容质量
公众号编辑器全面指南:10款主流工具深度评测 前言 公众号编辑器作为新媒体和自媒体人日常必备的工具,能极大提升公众号运营效率和内容质量.面对众多类型和风格各异的公众号编辑器网站,如何选择一款真正适合自 ...
- CURL 命令的用法详解
CURL(Client URL)是一个强大的命令行工具,用于通过各种网络协议与服务器进行数据传输.它支持 HTTP.HTTPS.FTP.SFTP 等多种协议,广泛应用于 API 测试.数据获取.文件传 ...
- AEM 与 ActiveMQ 集成方案详解
Adobe Experience Manager (AEM) 与 ActiveMQ 的集成可实现系统间的解耦和异步通信,以下是详细的集成步骤与代码实现: 一.环境准备 AEM 环境:AEM 6.5+ ...
- 以数据驱动PCB制造革新:盘古信息引领行业领军企业数字化范式跃迁
智能车间内,机械臂正以高精度程序设定完成钻孔作业:每台设备上方的电子看板实时跳动生产数据--订单交付周期.工艺参数偏差值.设备OEE效率指标清晰可见:物料配送AGV小车穿梭于货架间,通过RFID标签自 ...
- Django实战:自定义中间件实现全链路操作日志记录
一.中间件 介绍 在 Django 中,中间件(Middleware)是一组轻量级.底层的插件系统,用于全局地改变 Django 的输入和输出.中间件可以在请求被处理之前和响应返回之前执行代码,从而实 ...
- 英文单词字母大小写在线转换工具html代码
这是一个简单而实用的在线大小写转换工具.它允许用户输入任意文本,并提供三种转换选项:转换为全大写.全小写或首字母大写. 使用这个工具非常简单快捷.用户只需要在输入框中输入想要转换的文本,选择合适的转换 ...
- C# WinForm NumericUpDown 控件全选其中文字 (Numeric 全选文本) 全选文本Numeric
num_length.Focus(); UpDownBase updbText = (UpDownBase)num_length; ...
- 一个C#二维码图片识别
https://www.cnblogs.com/xuezhizhang/p/8968515.html 关键是这个 ThoughtWorks.QRCode.Codec; NuGet直接下载就可以了 // ...
- 前端开发系列050-基础篇之组件的概念和使用(Vue)
本文是早期学习Vue整理的一些阶段性总结,内容主要关于Vue框架中组件的概念和数据传递. 一.组件的相关概念 在Vue学习的时候参考了很多文档和书籍,这些文档和书籍中总是充满各种术语(定语),在这里先 ...
- ble设备的第一次成功例子
http://www.cnblogs.com/vamei/p/6753531.html#undefined 参考博客 树莓派作为BLE外设 下一步,我们尝试用树莓派进行BLE通信.我们先把一个树莓派改 ...