pyqt5实现振动波形数据标注工具

发布时间:2023年12月17日

pyqt5实现振动波形数据标注工具

1、效果图

在这里插入图片描述

2、实现功能

1、数据库连接
2、数据筛选
3、波形图展示、频谱图展示
4、特征展示:时域、频域
5、数据标注与添加
6、模型训练与分类识别

3、部分核心代码

3.1、连接数据库
# -*- coding: utf-8 -*-

"""
@contact: 微信 1257309054
@file: mark_main.py
@time: 2023/12/16 20:14
@author: LDC
"""
    def btn_link_clicked(self):
        # 连接数据库
        self.is_link = True
        try:
            self.source_cur.close()
            self.source_con.close()
            self.target_cur.close()
            self.target_con.close()
        except:
            pass
        try:
            self.source_con = pymysql.connect(
                host='127.0.0.1',  # 数据库所在地址URL
                user='root',  # 用户名
                password=self.source_password_edit.text(),  # 密码
                database=self.source_database_edit.text(),  # 源数据库名称
                port=3306,  # 端口号
                charset='utf8'
            )
            # 拿到查询游标
            self.source_cur = self.source_con.cursor()
        except Exception as e:
            self.feature_text.setText('源数据库连接错误:{}'.format(e))
            return False

        try:
            self.target_con = pymysql.connect(
                host='127.0.0.1',  # 数据库所在地址URL
                user='root',  # 用户名
                password=self.target_password_edit.text(),  # 密码
                database=self.target_database_edit.text(),  # 目标数据库名称
                port=3306,  # 端口号
                charset='utf8'
            )
            # 拿到查询游标
            self.target_cur = self.target_con.cursor()
        except Exception as e:
            self.feature_text.setText('目标数据库连接错误:{}'.format(e))
            return False
        self.btn_link.setText('已连接')

        # 获取目标数据库最大表记录
        sql = 'SELECT MAX(ID) AS lastRecordId FROM alert_log'
        self.target_cur.execute(sql)
        self.target_alert_log_id = self.target_cur.fetchone()
        if self.target_alert_log_id[0]:
            self.target_alert_log_id = self.target_alert_log_id[0] + 1
        else:
            self.target_alert_log_id = 1
        self.target_alert_log_id_edit.setText(str(self.target_alert_log_id))
        self.feature_text.setText('源数据库、目标数据库连接成功。表最大记录是:{}'.format(self.target_alert_log_id))
3.2、添加到数据库:
"""
@contact: 微信 1257309054
@file: mark_main.py
@time: 2023/12/16 20:14
@author: LDC
"""
    def btn_add_clicked(self):
        # 添加数据至目标数据库
        try:
            sql = """select * from alert_log where id={}""".format(self.source_alert_log_ids[self.source_alert_log_ids_index])
            self.source_cur.execute(sql)
            desc = self.source_cur.description  # 获取字段的描述,默认获取数据库字段名称,从新定义时经过AS关键重新命名便可
            row = self.source_cur.fetchone()
            data_dict = dict(zip([col[0] for col in desc], row))  # 一行数据列表表达式把数据组装起来
            # rows = self.source_cur.fetchall() # 获取多行数据
            # datas_dict = [dict(zip([col[0] for col in desc], row)) for row in self.source_cur.fetchall()]  # 多行数据列表表达式把据组装起来
            data_dict['id'] = self.target_alert_log_id # 修改id、type_label值
            data_dict['type_label'] = self.type_edit.text()
            clos, value = zip(*data_dict.items()) # 转成两个元组,clos是所有字段名,value是对应字段的值
            # 转成sql,其中%s对应的变量会在execute函数执行时自动匹配上value元组里面的值
            sql = """INSERT INTO `alert_log` (%s) VALUES (%s)""" % (','.join(clos),','.join(['%s'] * len(value)))
            self.target_cur.execute(sql, value)
            self.target_con.commit()
            self.feature_text.setText('添加成功')
        except Exception as e:
            self.feature_text.setText('添加失败:{}'.format(e))
文章来源:https://blog.csdn.net/lm_is_dc/article/details/135042791
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。