使用PyQt5从零进行大数据app构建(十)从UI分离耗时业务到子线程,数据库交互模式与sql异常捕获

本文分享了使用PyQt5进行数据库交互及多线程处理的经验,解决了UI阻塞问题,并探讨了QThread的应用技巧。作者在封装个人数据挖掘模型过程中,采用QThread分离耗时操作,确保了界面流畅,计划进一步完善模型更新模块和进度条功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:想写一个应用好久了,独立开发大概是每个程序员的梦想。自从之前写了一个数据挖掘的小模型,一直想封装一下,故而上路,所以此系列算不上教程,只是记录分享这个过程的坑点和经验,力求有头有尾,网上抄来抄去的教程真的看的头疼,己所不欲勿施于人,在封装完毕之后我会将完整的代码贴出来与大家分享。

教程合集地址:https://blog.youkuaiyun.com/infent/column/info/30927

这一节主要实现了数据库交互模式,设计到两个比较耗时的操作,一个是query查询,一个是表单内容循环填充,每次进行这两个内容的时候,ui界面都会阻塞,从而显示未响应。因此需要使用QThread来将这两部分的逻辑分离出来。

接下来是分析线程中的业务逻辑该怎么写了,之前我把界面展示也放在线程里结果一直不展示界面,后来把计算结果返回给展示界面,这块还要搞清楚。

最终实现的效果如上,如果再友好一点,可以再设置进度条,这个在后面的会实现。

其次我仍然是使用QTableWeight进行的展示,但是Qt有一个QSqlTableModel可以更便捷的展示和操作界面,结合表指定和多线程应该能更方便一些。

在PyQt5快速开发实践中的9.24小节有一个展示的例子,如果要迭代开发的话,我的可视化操作可能考虑想这个例子靠拢,废除手动sql填写,因为这样不够健壮,一旦sql写错了就有可能导致程序退出,这一点通过使用try,except,finally语句包裹处理流程可以处理,对于错误的sql语句,我们在后台输出错误并释放执行按钮。

 

还剩下模型更新模块和进度条使用,争取这周搞完吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值