PyQt入门指南十 数据库操作入门

在PyQt中进行数据库操作,通常会使用QSqlDatabase类来管理数据库连接,以及QSqlQuery类来执行SQL语句。以下是一个简单的入门指南,展示如何在PyQt应用程序中进行基本的数据库操作。

安装依赖

首先,确保你已经安装了PyQt5和PyQt5.QtSql模块。如果没有安装,可以使用pip进行安装:

 
pip install PyQt5 PyQt5.QtSql

连接数据库

以下是一个简单的例子,展示如何连接到SQLite数据库:

 
from PyQt5.QtSql import QSqlDatabase, QSqlQuery# 创建一个数据库连接
db = QSqlDatabase.addDatabase('QSQLITE')# 设置数据库文件的路径
db.setDatabaseName('example.db')# 打开数据库连接
if not db.open():print("无法建立数据库连接!")return Falseprint("数据库连接成功!")

创建表

使用QSqlQuery执行SQL语句来创建表:

 
query = QSqlQuery()# 创建表的SQL语句
create_table_sql = """
CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER
)
"""# 执行SQL语句
if query.exec_(create_table_sql):print("表创建成功!")
else:print("表创建失败:", query.lastError().text())

插入数据

插入数据也是通过QSqlQuery来完成的:

 
# 插入数据的SQL语句
insert_sql = """
INSERT INTO users (name, age) VALUES (:name, :age)
"""query.prepare(insert_sql)
query.bindValue(':name', '张三')
query.bindValue(':age', 30)if query.exec_():print("数据插入成功!")
else:print("数据插入失败:", query.lastError().text())

查询数据

查询数据同样使用QSqlQuery

 
# 查询数据的SQL语句
select_sql = "SELECT * FROM users"query.exec_(select_sql)while query.next():id = query.value(0)name = query.value(1)age = query.value(2)print(f"ID: {id}, Name: {name}, Age: {age}")

更新和删除数据

更新和删除数据的操作与插入类似,只需更改SQL语句即可:

 
# 更新数据的SQL语句
update_sql = """
UPDATE users SET age = :age WHERE name = :name
"""query.prepare(update_sql)
query.bindValue(':name', '张三')
query.bindValue(':age', 31)if query.exec_():print("数据更新成功!")
else:print("数据更新失败:", query.lastError().text())# 删除数据的SQL语句
delete_sql = "DELETE FROM users WHERE name = :name"query.prepare(delete_sql)
query.bindValue(':name', '张三')if query.exec_():print("数据删除成功!")
else:print("数据删除失败:", query.lastError().text())

关闭数据库连接

完成所有操作后,记得关闭数据库连接:

 
db.close()

以上就是在PyQt中进行数据库操作的基本步骤。在实际应用中,你可能需要处理更复杂的逻辑,比如事务处理、错误处理等。记得在生产环境中保护好你的数据库凭证,不要直接将其硬编码在代码中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1558143.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

需求7———通过一个简单的小需求来理清修改后端的思路

我今天下午刚刚完成了睿哥早上说的几个小问题,现在距离下班时间还有两个小时,已经没啥可干的了,然后我发现我之前做的很多需求还没有写文章来总结,所以现在趁着有空,我先写一下总结。这么多需求中,我挑了一…

【leetcode】238.除自身以外数组的乘积

由于该题不能使用除法,所以参考题解写一个左右乘积列表的方法 创建两个新的数组pef,suf 一个用于记录从左到右的乘积(类似于动态规划的思想)pef 另一个记录从右到左的乘积 bsuf(注意suf是从右到左进行累乘) 而pef的最左…

【3dgs】3DGS**(3D Geometry Sensing)与 **NeRF**(Neural Radiance Fields)对比

以下是 3DGS(3D Geometry Sensing)与 NeRF(Neural Radiance Fields)对比表格: 更加详细的资料,轻参考: NERF/3DGS 对比维度3DGS (3D Geometry Sensing)NeRF (Neural Radiance Fields)基本原理…

Linux之shell详解(Linux Shell Detailed Explanation)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

使用 Helsinki-NLP 中英文翻译本地部署 - python 实现

通过 Helsinki-NLP 本地部署中英文翻译功能。该开源模型性价比相对高,资源占用少,对于翻译要求不高的应用场景可以使用,比如单词,简单句式的中英文翻译。 该示例使用的模型下载地址:【免费】Helsinki-NLP中英文翻译本…

浙江大学机试试题合集(2)

🍰🍰🍰hello宝子们,今天我们继续来练习浙江大学的机试题目。加油!fighting!( •̀ ω •́ )✧ 21🍩1696 Ambulance Dispatch 给定一张城市地图,上面有所有的救护车调度中心(救护车派遣中心) 并标记所有拾取点。你应该写一个程序来处理紧急呼叫。假设来电者正在某个…

得物App荣获“科技创新服务示范案例”,推动品质消费新升级

备受瞩目的2024年中国国际服务贸易交易会在北京盛大开幕,这一由商务部和北京市政府联合举办、并获得世贸组织、联合国等国际组织支持的国家级、国际性、综合型服务贸易盛会,再次吸引了全球的目光。作为上海科技企业的优秀代表,得物App亮相此次…

为什么Linux系统下的程序无法在Windows下运行

两个系统的格式不同,格式就是协议,是在固定位置有意义的数据。Linux下可执行文件格式是elf,可使用readelf查看elf文件头 而Windows下的可执行程序是PE格式,是一种可执行文件。 还有一点是Linux下和Win下系统API不同,这…

Stable Diffusion最新版nowebui的api使用详解

最近在使用stable diffusion最新版的Stable Diffusion WebUI Forge进行api调用,下面来一步一步的进行展开吧!!! 1、下载lllyasviel/stable-diffusion-webui-forge GitHub - lllyasviel/stable-diffusion-webui-forgeContribute to lllyasviel/stable-diffusion-webui-for…

Vxe UI vue vxe-table 实现表格单元格选中功能

Vxe UI vue vxe-table 实现表格单元格选中功能 在表格中实现鼠标点击任意单元格,选取的功能,通过 mouse-config 配置就可以开启单选功能,多选单元格选取功能需安装插件支持。 代码 参数说明 mouse-config 鼠标配置项: selected&…

基于连续小波变换(CWT)批量生成一维信号的时频图 最终生成30张时频图。生成的图像可用于后续的深度学习分类或其他处理。附详细的说明文档。

Matlab基于连续小波变换(CWT),将一维信号批量生成时频图的源代码。此示例中,原始信号data是30*1280的格式,一共30条信号,信号长度为1280。最终生成30张时频图。生成的图像可用于后续的深度学习分类或其他处…

多级代理与提权维权

目录 代理构建FRP介绍下载配置⽂件: sock5代理Venom介绍下载配置 icmpsh介绍下载配置 pingtunnel介绍下载配置 EarthWorm介绍下载使用 权限提升win权限提升常⻅利⽤⼯具 Linux权限提升SUID提权 权限维持win权限维持系统服务后⻔⾃启动⽬录注册表后⻔其他类似隐藏⽤户…

前端vue-配置请求拦截器

1.配置拦截器,记得20行的导出 2.响应拦截器,记得28行的导出 3.拦截器不止可以拦截,还可以添加内容

解锁SoC “调试”挑战,开启高效原型验证之路

引言: 由于芯片设计复杂度的提升、集成规模的扩大,以及产品上市时间要求的缩短,使得设计验证变得更加困难。特别是在多FPGA环境中,设计调试和验证的复杂性进一步增加,传统的调试手段难以满足对高性能、高效率的需求。因…

Spring Boot 进阶-详解SpringBoot的复杂数据校验规则

在之前的文章中,我们介绍了SpringBoot整合JSR-303规则来完成数据校验操作。接下来我们来聊一聊关于数据校验的具体用法。 之前的文章中举过一个简单的例子通过学生信息提交的例子来介绍了关于数据校验如何去做。那么接下来这篇文章,我们就来看看对于一些复杂的数据校验如何完…

实例讲解电动汽车VIN写入规则及Simulink建模方法(一)——VIN校验方法及Simulink建模

目录 一、车辆VIN简介 二、电动汽车VIN写入规则及校验和规则 1、写入规则 2、校验和规则 三、VIN校验方法及Simulink建模 1、VIN校验方法 2、上位机发送VIN写入报文解包Simulink建模 3、校验和对比验证Simulink建模 4、VIN校验方法Simulink建模整体模型 四、总结 一、…

10.8 springBoot学习

学习内容的来源途径:spring Boot 1.不同的架构 之前写的qq是C/S,百度贴吧,淘宝之类的网站项目则为B/S架构. 2.两种架构对比

0基础跟德姆(dom)一起学AI 机器学习04-逻辑回归

逻辑回归简介 应用场景 逻辑回归是解决二分类问题的利器 数学知识 sigmoid函数 概率 极大似然估计 核心思想: 设模型中含有待估参数w,可以取很多值。已经知道了样本观测值,从w的一切可能值中(选出一个使该观察值出现的概率为…

No.13 笔记 | 网络安全防护指南:从法律法规到技术防御

一、法律法规 《中华人民共和国网络安全法》要点 遵守法律:所有个人和组织在使用网络时,必须遵守宪法和法律,不得利用网络从事危害国家安全等活动。 个人信息保护:禁止非法获取、出售或提供个人信息。若违反但未构成犯罪&#x…

Rust编程的匹配控制语句match

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 学过C语言的同学或许在等switch,明确告诉你们,Rust没有switc…