尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

pyqt 操作mysql数据库

pyqt 操作mysql数据库
📅 发布时间:2026/6/20 15:14:34

 

 

#

import mysql.connector
from datetime import datetime, timezone
from PyQt5.QtCore import pyqtSignal, QObject
import time
import threadingclass VC_DB_Tool(QObject):signalMsg = pyqtSignal(str)def __init__(self, host="localhost", port=3306, database="", username="", password=""):"""初始化MySQL工具类:param host: 数据库主机地址:param port: 数据库端口:param database: 数据库名:param username: 用户名:param password: 密码"""super().__init__()self.host = hostself.port = portself.database = databaseself.username = usernameself.password = passwordself.db = Noneself.cursor = None#
    def set_DBIP(self,db_ip):self.host = db_ip#
    def set_DBPort(self,port):self.port = port#
    #
    def set_DBDatabase(self,database):self.database = database#
    #
    def set_DBUsername(self,username):self.username = username#
    def set_DBPassword(self,password):self.password = password#
    def connect(self):"""连接数据库:return: 连接是否成功"""try:self.db = mysql.connector.connect(host=self.host,port=self.port,database=self.database,user=self.username,password=self.password)self.cursor = self.db.cursor(dictionary=True)self.signalMsg.emit("数据库连接成功")return Trueexcept Exception as e:self.signalMsg.emit(f"数据库连接失败: {str(e)}")return Falsedef disconnect(self):"""断开数据库连接"""if self.db and self.db.is_connected():self.cursor.close()self.db.close()self.signalMsg.emit("数据库连接已断开")def read_table_data(self, table_name):"""读取数据表所有数据:param table_name: 表名:return: 查询结果列表"""if not self.db or not self.db.is_connected():self.signalMsg.emit("数据库未连接")return Nonetry:query = f"SELECT * FROM {table_name}"self.cursor.execute(query)result = self.cursor.fetchall()return resultexcept Exception as e:self.signalMsg.emit(f"读取表数据失败: {str(e)}")return Nonedef query_data(self, table_name, conditions=None):"""根据条件查询数据表数据:param table_name: 表名:param conditions: 查询条件字典,如 {"name": "张三", "age": 25}:return: 查询结果列表"""if not self.db or not self.db.is_connected():self.signalMsg.emit("数据库未连接")return Nonetry:# 构建SQL语句   sql = f"SELECT * FROM {table_name}"if conditions:where_clause = " AND ".join([f"{key}={conditions[key]}" for key in conditions.keys()])sql += f" WHERE {where_clause};"self.signalMsg.emit(f"{str(sql)}")self.cursor.execute(sql, conditions or {})result = self.cursor.fetchall()return resultexcept Exception as e:self.signalMsg.emit(f"条件查询失败: {str(e)}")return Nonedef get_table_count(self, database_name):"""获取某个数据库的数据表数量:param database_name: 数据库名:return: 数据表数量"""if not self.db or not self.db.is_connected():self.signalMsg.emit("数据库未连接")return Nonetry:query = """SELECT COUNT(*) as table_count FROM information_schema.tables WHERE table_schema = %s"""self.cursor.execute(query, (database_name,))result = self.cursor.fetchone()return result['table_count'] if result else Noneexcept Exception as e:self.signalMsg.emit(f"获取表数量失败: {str(e)}")return Nonedef check_table_exists(self, table_name):"""检查表是否存在:param table_name: 表名:return: 是否存在"""if not self.db or not self.db.is_connected():self.signalMsg.emit("数据库未连接")return Falsetry:self.cursor.execute("SHOW TABLES LIKE %s", (table_name,))return self.cursor.fetchone() is not Noneexcept Exception as e:self.signalMsg.emit(f"检查表存在失败: {str(e)}")return False#
    def extract_date_from_table_name(self,table_name):"""从表名中提取日期字符串"""parts = table_name.split('_')if len(parts) >= 4:return parts[-1]return ""def sort_table_names_by_date(self,table_names):"""根据表名中的日期部分对表名进行排序(从最远到最近)"""sorted_tables = sorted(table_names, key=self.extract_date_from_table_name, reverse=False)return sorted_tables#
    def get_all_table_names(self, database_name=None):"""获取数据库中所有表的名称:param database_name: 数据库名,如果为None则使用当前连接的数据库:return: 表名列表"""if not self.db or not self.db.is_connected():self.signalMsg.emit("数据库未连接")return Nonetry:if database_name is None:database_name = self.databasequery = """SELECT table_name FROM information_schema.tables WHERE table_schema = %sORDER BY table_name"""self.cursor.execute(query, (database_name,))result = self.cursor.fetchall()#
            #print(result)# 提取表名列表table_names = [row['TABLE_NAME'] for row in result]# 按日期排序sorted_tables = self.sort_table_names_by_date(table_names)return sorted_tablesexcept Exception as e:self.signalMsg.emit(f"获取表名列表失败: {str(e)}")return None#
#

 

 

 

#

QQ 3087438119

相关新闻

  • YOLOv8自动锚点计算功能:AutoAnchor机制介绍
  • YOLOv8训练技巧揭秘:提升mAP与推理速度的五大方法
  • 【2025最新】基于SpringBoot+Vue的校园疫情防控系统管理系统源码+MyBatis+MySQL

最新新闻

  • 2026 年宜春市厨卫屋顶防水修缮三家横向测评:吉修匠 99.8 分稳居榜首 - 吉修匠
  • 免安装去水印方法,微信里打开就能用 - 工具软件使用方法推荐
  • 佛山精装房改造售后服务哪家好?2026年本地服务品牌推荐 - 优家闲谈
  • 手机电脑端图片去水印工具推荐,高清无损保留原画质 - 工具软件使用方法推荐
  • 微信小程序一键去水印,保存高清视频素材就这么简单 - 爱上科技热点
  • 注销公告登报怎么线上办理?2026这样简单又省心 - 资讯速览

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号