5、监测数据采集物联网应用开发步骤(5.1)
- 监测数据采集物联网应用开发步骤(4)
Sqlite3数据库读写操作开发、异常信息统一处理类开发
本章节需要调用sqlite3及mysql-connector
安装sqlite3
Pip3 install sqlite3
安装mysql-connector
pip3 install mysql-connector
验证是否安装成功,python中运行下列代码无异常则安装成功:
import sqlite3
import mysql.connector
在项目开发过程中各类异常信息try...except处理,该处理类将try ...except异常信息统一处理并日志文件输出,便于快速定位错误信息及代码位置;
异常信息日志打印格式
yyyy-MM-dd H:mm:ss=>异常的类名=>该类中调用出错的函数名==>其他异常信息
参考如下图:
创建异常信息统一处理类com.zxy.z_debug.py
调用方式参考:
from com.zxy.z_debug import z_debug
class ClassName(z_debug):
com.zxy.z_debug.py类
#! python3
# -*- coding: utf-8 -
'''
Created on 2023年08月28日
@author: zxyong 13738196011
'''import inspect,datetime
from com.zxy.adminlog.UsAdmin_Log import UsAdmin_Log
from com.zxy.common import Com_Para#监测数据采集物联网应用--异常信息统一处理
class z_debug(object):def __init__(self):passdef debug_in(self,inputMsg):excStr = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+"=>"+str(self)+"=>"+self.__class__.__name__+"."+inspect.stack()[1][3]+"==>"+inputMsguL = UsAdmin_Log(Com_Para.ApplicationPath, excStr)uL.SaveFileDaySub("exception")print(excStr)def debug_info(self):excStr = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+"=>"+str(self)+"=>"+self.__class__.__name__+"."+inspect.stack()[1][3]+"==>"uL = UsAdmin_Log(Com_Para.ApplicationPath, excStr)uL.SaveFileDaySub("exception_debug")return excStr
在多个线程中使用访问SQLite数据库,为避免多个线程之间的竞争。需要添加数据库线程锁机制以确保线程安全,若使用mysql数据库无需数据库线程锁机制。
在com.zxy.common.Com_Para.py中添加如下内容
#数据库线程锁机制
Dblock1 = threading.Lock()
Dblock2 = threading.Lock()
Dblock3 = threading.Lock()
Dblock4 = threading.Lock()
#静态数据库配置文件路径
ACTIONPATH = "dbconfig.properties"
driverClassName = ""
url = ""
username = ""
password = ""
#是否桌面数据库 0:Mysql 1:sqlite3
IL_DB = 1
#数据库连接池初始数量 1:Sqlite3
incrementalConnections = 2
#数据库连接池最大数量
maxConnections = 10
port = -1
UserDebug = "0"
创建静态配置库数据库配置文件读写类com.zxy.common.DbConfigSelf.py
#! python3
# -*- coding: utf-8 -
'''
Created on 2023年08月28日
@author: zxyong 13738196011
'''import configparser
from com.zxy.common import Com_Para
from com.zxy.z_debug import z_debug#监测数据采集物联网应用--静态配置库数据库配置文件读写
class DbConfigSelf(z_debug):def __init__(self):pass@staticmethoddef GetDbConfigSelfNew():temPath = Com_Para.ApplicationPath + Com_Para.zxyPath + Com_Para.ACTIONPATHtemProp = configparser.ConfigParser()try:temProp.read(temPath)Com_Para.driverClassName = temProp.get("DB", "dataSource.driverClassName") if Com_Para.driverClassName == "org.sqlite.JDBC" :Com_Para.incrementalConnections = 1Com_Para.maxConnections = 1Com_Para.IL_DB = 1temStrRem = temProp.get("DB","dataSource.url").replace("@",Com_Para.ApplicationPath + Com_Para.zxyPath)Com_Para.url = temStrRemelse:Com_Para.url = temProp.get("DB", "dataSource.url")Com_Para.username = temProp.get("DB", "dataSource.username")Com_Para.password = temProp.get("DB", "dataSource.password")Com_Para.port = temProp.getint("DB", "server.port")Com_Para.UserDebug = temProp.getint("DB", "userDebug")except Exception as e:print("GetDbConfigSelfNew:"+repr(e)+"=>"+str(e.__traceback__.tb_lineno))finally:Pass
创建静态配置库数据库配置文件dbconfig.properties
配置文件内容:
[DB]
dataSource.driverClassName=org.sqlite.JDBC
dataSource.url=@center_data.db
dataSource.username=
dataSource.password=server.port=9000
userDebug=0
- 监测数据采集物联网应用开发步骤(5.2)
相关文章:

5、监测数据采集物联网应用开发步骤(5.1)
监测数据采集物联网应用开发步骤(4) Sqlite3数据库读写操作开发、异常信息统一处理类开发 本章节需要调用sqlite3及mysql-connector 安装sqlite3 Pip3 install sqlite3 安装mysql-connector pip3 install mysql-connector 验证是否安装成功,python中运行下列…...

ZZULIOJ 1148: 组合三位数之一,Java
ZZULIOJ 1148: 组合三位数之一,Java 题目描述 把1、2、3、4、5、6、7、8、9组合成3个3位数,要求每个数字仅使用一次,使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。 输入 无 输出 按从小到大的顺序输出这三个三位数&a…...

ROS功能包目录下CMakeLists.txt
1. add_execuble CMake基础教程(24)add_executable生成目标可执行文件 CMake中add_executable的使用 CMake中的add_executable命令用于使用指定的源文件向项目(project)添加可执行文件,其格式如下: add_executable(<name>…...

Python爬虫追踪新闻事件发展进程及舆论反映
目录 实现方案 1. 确定目标新闻源: 2. 确定关键词: 3. 使用网络爬虫获取新闻内容: 4. 提取和分析新闻文章: 5. 追踪新闻事件的发展进程: 6. 监测舆论反映: 7. 数据可视化: 完整代码示例…...

block层:7. 请求下发
blk_dispatch 源码基于5.10 1. blk_mq_sched_dispatch_requests void blk_mq_sched_dispatch_requests(struct blk_mq_hw_ctx *hctx) {// 队列struct request_queue *q hctx->queue;// 队列已停止或者被暂停if (unlikely(blk_mq_hctx_stopped(hctx) || blk_queue_quiesc…...

Matlab图像处理-平移运算
几何运算 几何运算又称为几何变换,是将一幅图像中的坐标映射到另外一幅图像中的新坐标位置,它不改变图像的像素值,只是改变像素所在的几何位置,使原始图像按照需要产生位置、形状和大小的变化。 图像几何运算的一般定义为&#…...

美创科技一体化智能化公共数据平台数据安全建设实践
公共数据是当今政府数字化转型的关键要素和未来价值释放的核心锚点,也是“网络强国”、“数字中国”的战略性资源。 作为数字化改革先行省份,近年来,浙江省以一体化智能化公共数据平台作为数字化改革的支撑总平台,实现了全省公共数…...

关于单例模式
单例模式的目的: 单例模式的目的和其他的设计模式的目的都是一样的,都是为了降低对象之间的耦合性,增加代码的可复用性,可维护性和可扩展性。 单例模式: 单例模式是一种常用的设计模式,用简单的言语说&am…...

pytest笔记: pytest单元测试框架
第一步:安装 和查看版本 pycharm settings 查看 第二步: 编写test_example.py def inc(x):return x1 def test_answer():assert inc(4) 5 第三步:在当前路径下执行pytest 命令 PS E:\data\web测试\Selenium3自动化测试实战——基于Pyth…...

vulnhub Seattle-0.0.3
环境:vuluhub Seattle-0.0.3 1.catelogue处任意文件下载(目录穿越) http://192.168.85.139/download.php?item../../../../../../etc/passwd 有个admin目录,可以下载里面的文件进行读取 2.cltohes详情页面处(参数prod)存在sql报错注入 http://192.16…...

MYSQL 添加行号将行号写入到主键的列
MYSQL 添加行号 SELECT rownum: rownum 1 AS rownum, a.* FROM(SELECT rownum : 0) t,is_afxt.hk_vehicle a--或者(假设CREATED_TIME日期列数据不重复) select (select count(1)1 from is_afxt.hk_vehicle b where b.CREATED_TIME < a.CREATED_TIME) rownum ,a.* from i…...

前端命令npm 、 cnpm、 pnpm、yarn 、 npx、nvm的区别
大名鼎鼎的npm(Node Package Manager)是随同NodeJS一起安装的包管理工具,NPM本身也是Node.js的一个模块。 npm的含义有两层: npm服务器,npm服务器网址为https://www.npmjs.org,npm是 Node 包的标准发布平台,用于 Node 包的发布、…...

Linux 发行版 Debian 宣布支持龙芯 LoongArch 架构
近期,龙芯发布了 3A6000 桌面处理器,芯片的性能又一次大幅度提升,成为国产芯片的又一里程碑。 同期,LoongArch 架构的生态建设也迅速提升,开源网络引导固件 iPXE、QQ Linux 版、摩尔线程等软硬件都官宣支持龙芯 Loong…...

PConv : Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks
摘要 为了设计快速的神经网络,**许多研究都集中在减少浮点运算(FLOPs)**的数量。然而,我们观察到这种FLOPs的减少并不一定会导致相同程度的延迟减少。这主要是由于浮点运算每秒效率较低的问题所致。为了实现更快的网络,我们重新审视了流行的操作算子,并证明这种低FLOPS主…...

Python中怎么解决内存管理的问题? - 易智编译EaseEditing
Python有自动的内存管理机制,这意味着大部分情况下你不需要手动管理内存,因为Python的垃圾回收机制会自动处理不再使用的对象。然而,有时候你仍然需要关注内存管理,特别是在处理大数据、长时间运行的应用或需要最大化性能的情况下…...

【JavaEE】Spring事务-事务的基本介绍-事务的实现-@Transactional基本介绍和使用
【JavaEE】Spring 事务(1) 文章目录 【JavaEE】Spring 事务(1)1. 为什么要使用事务2. Spring中事务的实现2.1 事务针对哪些操作2.2 MySQL 事务使用2.3 Spring 编程式事务(手动挡)2.4 Spring 声明式事务&…...

CentOs下面安装jenkins记录
目录 一、安装jenkins 二、进入jenkins 三、安装和Gitee,Maven , Publish Over SSH等插件 四、构建一个maven项目 一、安装jenkins 1 wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat-stable/jenkins.repo 2 rpm --im…...

海康威视相机-LINUX SDK 开发
硬件与环境 相机: MV-CS020-10GC 系统:UBUNTU 22.04 语言:C 工具:cmake 海康官网下载SDK 运行下面的命令进行安装 sudo dpkg -i MVSXXX.deb安装完成后从在/opt/MVS 路径下就有了相关的库,实际上我们开发的时候只需要…...

AI助力智能安检,基于图像目标检测实现危险品X光智能安全检测系统
基于AI相关的技术来对一些重复性的但是又比较重要的工作来做智能化助力是一个非常有潜力的场景,关于这方面的项目开发实践在我之前的文章中也有不少的实践,感兴趣的话可以自行移步阅读即可:《AI助力智能安检,基于目标检测模型实现…...

开源软件的崛起:历史与未来
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

apk 静默安装
apk 静默安装 - 欧颜柳 - 博客园 (cnblogs.com) 如果需要应用进行静默安装,则需要满足一下两个条件 1 必须添加权限 <uses-permission android:name"android.permission.INSTALL_PACKAGES" /> 2 必须是系统应用,或者系统签名应用 方法…...

Unity记录4.2-存储-从json文件获取Tile路径
文章首发见博客:https://mwhls.top/4813.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议,私信不回。 汇总:Unity 记录 摘要:从json文件获取Tile材质路径。 确定保存方案-2023/08/1…...

vue3页面传参?
...

NB水表和LoRa水表有哪些不同之处?
NB水表和LoRa水表是两种目前市场上常见的智能水表,它们在功能、性能、应用场景等方面存在一些不同之处。 一、技术方面 NB水表采用NB-IoT技术,而LoRa水表采用LoRa技术。NB-IoT技术是窄带物联网技术,它具有良好的低功耗、低成本、高覆盖、高可…...

Java进阶(6)——抢购问题中的数据不安全(非原子性问题) Java中的synchronize和ReentrantLock锁使用 死锁及其产生的条件
目录 引出场景:大量请求拥挤抢购事务的基本特征ACID线程安全的基本特征 加锁(java)synchronized锁ReentrantLock锁什么是可重入锁?如何保证可重入 滥用锁的代价?(死锁)死锁的四个必要条件死锁的案例 总结 引出 1.大量请…...

SpringBoot初级开发--加入Log4j进行日志管理打印(6)
日志记录在整个java工程开发中占着很重要的比重,因为很多问题的排查需要通过日志分析才能确认。在SpringBoot中我用得最多的就是log4j这个日志框架。接下来我们具体配置log4j. log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别&#…...

计算机竞赛 基于GRU的 电影评论情感分析 - python 深度学习 情感分类
文章目录 1 前言1.1 项目介绍 2 情感分类介绍3 数据集4 实现4.1 数据预处理4.2 构建网络4.3 训练模型4.4 模型评估4.5 模型预测 5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于GRU的 电影评论情感分析 该项目较为新颖,适合作为竞…...

android logcat问题 怎么换成旧版
参考 如果想切换回旧版LOGCAT,按照下方步骤设置即可 File->Settings->Expermental->Logcat->Enable new Logcat tool window:取消勾选 设置好后上方会有一个Toast,询问你是否使用新版logcat,关掉即可 最新测试版移…...

监听的用法watch
1、当想停止某页面定时刷新(监听路由的变化) /**组件被移除时调用 */deactivated() {clearInterval(this.timer);this.timer null;},/**监听路由变化是否刷新 */watch: {// 方法1 //监听路由是否变化$route(to, from) {if (to.name "xxx") {…...

XML—标记语言
什么是XML? Extensible Markup Language,可扩展标记语言。 那标记语言是什么? 用文字做标记表达一些效果或携带一些数据。比如:HTML、XML 我的理解:用倾盆大雨表达雨很大 那XML为什么说是可扩展的呢? 还…...