PyQt5数据库开发2 5.2 QSqlRelationalTableModel
目录
一、Qt窗体设计
1. 新建Qt项目
2. 添加组件
3. 添加资源
4. 添加Action
5. 添加工具栏
6. 添加菜单项
7. 添加退出功能
二、SQL Server下建表插数据
1. 建立表
2. 插入数据
3. 单表数据
4. 联合查询
三、代码实现
1. 新建项目目录
2. 编译窗体文件和资源文件
3. 新建Eric6项目
4. 新建myMainWindow.py文件
5. 新建appMain.py文件
6. openTable函数
7. 测试opentable函数
8. 添加do_currentChanged槽函数
8.1 import新模块
8.2 添加函数
8.3 在openTable函数中添加代码
9. 添加记录代码
10. 插入记录代码
11. 删除记录代码
12. 保存修改代码
13. 取消修改代码
14. 字段列表代码
四、修改记录代码测试
1. 在数据库里面查令狐冲的数据
2. 修改
3. 回到数据库里面再查
五、字段列表测试
一、Qt窗体设计
1. 新建Qt项目



MainWindow的windowTitle属性设为bkj5-2

2. 添加组件
添加一个tableView

3. 添加资源

4. 添加Action

注意除了actOpenDB和actQuit之外,其他Action的enabled属性取消
5. 添加工具栏

6. 添加菜单项


7. 添加退出功能

二、SQL Server下建表插数据
1. 建立表
建立部门表
CREATE TABLE departments(departID INT PRIMARY KEY,department VARCHAR(40) NOT NULL )建立专业表
CREATE TABLE majors(majorID INT PRIMARY KEY,major VARCHAR(40) NOT NULL,departID INT NOT NULL REFERENCES departments(departID))注意专业表有个外键指向部门表的departid
建立学生表
CREATE TABLE students(studID INT PRIMARY KEY,name VARCHAR(10) NOT NULL,gender VARCHAR(4),departID INT REFERENCES departments(departID),majorID INT REFERENCES majors(majorID))注意学生表有个外键指向部门表的departid,还有个外键指向专业表的majorid
2. 插入数据
INSERT INTO departments VALUES(10, '泰山派')
INSERT INTO departments VALUES(20, '衡山派')
INSERT INTO departments VALUES(30, '华山派')
INSERT INTO departments VALUES(40, '嵩山派')
INSERT INTO departments VALUES(50, '恒山派')
INSERT INTO departments VALUES(60, '日月神教')
INSERT INTO departments VALUES(70, '少林派')
INSERT INTO departments VALUES(80, '武当派')INSERT INTO majors VALUES(3001, '华山剑法', 30)
INSERT INTO majors VALUES(3002, '紫霞神功', 30)
INSERT INTO majors VALUES(3003, '独孤九剑', 30)
INSERT INTO majors VALUES(5001, '恒山剑法', 50)
INSERT INTO majors VALUES(6001, '吸星大法', 60)
INSERT INTO majors VALUES(7001, '少林七十二绝技', 70)
INSERT INTO majors VALUES(7002, '易筋经', 70)
INSERT INTO majors VALUES(8001, '太极剑法', 80)INSERT INTO students VALUES(3000001,'令狐冲','男', 30, 3003)
INSERT INTO students VALUES(3000002,'岳不群','男', 30, 3002)
INSERT INTO students VALUES(3000003,'岳灵珊','女', 30, 3001)
INSERT INTO students VALUES(5000001,'仪琳','女', 50, 5001)
INSERT INTO students VALUES(6000001,'任我行','男', 60, 6001)
INSERT INTO students VALUES(7000001,'方证','男', 70, 7002)
INSERT INTO students VALUES(8000001,'冲虚','男', 80, 8001)
3. 单表数据



4. 联合查询


三、代码实现
1. 新建项目目录
新建e:\baikejia\bkj5-2目录
2. 编译窗体文件和资源文件
拷贝项目5-1里面的compile.bat到项目目录中,运行。
3. 新建Eric6项目

4. 新建myMainWindow.py文件
输入以下内容

5. 新建appMain.py文件
内容如下

6. openTable函数
添加打开表函数,先import模块

代码如下

7. 测试opentable函数

可以看到没有显示departid和majorid,而是显示了关联表的相应字段,输出类似于

8. 添加do_currentChanged槽函数
8.1 import新模块

8.2 添加函数

8.3 在openTable函数中添加代码

9. 添加记录代码

10. 插入记录代码

11. 删除记录代码

12. 保存修改代码

13. 取消修改代码

14. 字段列表代码

四、修改记录代码测试
1. 在数据库里面查令狐冲的数据

2. 修改
把令狐冲的学院从华山派改为日月神教,专业从独孤九剑改为吸星大法

改好后点保存

3. 回到数据库里面再查


显示是显示的学院名和专业名,在后台数据库改的还是原来的students表
五、字段列表测试

相关文章:
PyQt5数据库开发2 5.2 QSqlRelationalTableModel
目录 一、Qt窗体设计 1. 新建Qt项目 2. 添加组件 3. 添加资源 4. 添加Action 5. 添加工具栏 6. 添加菜单项 7. 添加退出功能 二、SQL Server下建表插数据 1. 建立表 2. 插入数据 3. 单表数据 4. 联合查询 三、代码实现 1. 新建项目目录 2. 编译窗体文件和资…...
树莓派——智能家居第一步
辛辛苦苦配了成功让树莓派开始工作了,开始搞智能家居!大体思路:基于工厂模式,分模块来实现上图分为三部分:主控、外设、控制主控我采用的是树莓派的4b4G版本,外设包括四个区域的灯(我的和上图有…...
【Golang】Golang基础入门级教程 -- 0基础安装搭建Go语言开发环境
目录 安装和下载GO语言 下载 下载地址 版本的选择 安装 Windows安装 Linux下安装 Mac下安装 检查 GOROOT和GOPATH GOPROXY Go开发编辑器 VS Code介绍 下载与安装 配置 Go扩展 第一个Go程序 Hello World go mod init 编写 编译 VSCode切换默认终端 本篇文章…...
MATLAB | 如何解决实验数据散点图重叠问题(overlap)
本期部分实验效果: 这期讲一下如果数据重合严重该咋办(overlap),事先说明,本文中的绘图均使用一个几行的简单小代码进行了修饰: function defualtAxes axgca;hold on;box on ax.XGridon; ax.YGridon; ax.XMinorTickon; ax.YMinor…...
Kubernetes 一键部署利器:kubeadm
文章目录集群部署痛点kubeadm 的工作原理kubeadm init 的工作流程kubeadm join 的工作流程kubeadm 的部署配置参数集群部署痛点 Kubernetes 的部署一直以来都是挡在初学者前面的一只“拦路虎”。尤其是在 Kubernetes 项目发布初期,它的部署完全要依靠一堆由社区维护…...
[jS 事件循环理解] 主线程 宏任务 微任务 - 执行顺序优先级理解
最近看了一个帖子 事件循环机制-宏任务-微任务 把js单线程中 , 主线程 | 宏任务 | 微任务 的调用顺序讲解的很直白精巧 , 记录一下以供查阅 1.主线程, 可以理解为从上到下顺序执行的一个js线程 2. 宏任务 script / setTimeOut /setInterval等 3. 微任务主要有promise等 4. 热…...
顺序表和链表的比较
这两个结构各有优势,相辅相成。 顺序表: 优点: 1.支持随机访问。 2.CPU高速缓存命中率更高。(物理空间连续) 缺点: 1.头部和中部插入和删除时间效率低(O(n))。 2.连续的物理空间,空间不够后需要增容:…...
Java为什么只能单继承???
目录 先屡清楚继承和实现的区别: 分析原因: 多继承虽然能使子类同时拥有多个父类的特征,但是其缺点也是很显著的,主要有两方面: (1)如果在一个子类继承的多个父类中拥有相同名字的实例变量,子类在引用该…...
数据安全-分类分级 调研分析报告
目录 前言一、数据分类分级概述1.数据分类2.数据分级二、数据分类分级原则三、数据分类分级的框架和方法1.数据分类分级的框架2.分类标准分类常见的方法2.1 MECE2.2 线分法和面分法及混合分法2.3 数据主题域2.4 技术选型维度2.5 以业务应用维度2.6 信息安全隐私方面的分类法3.分…...
浏览器对象详解
文章目录浏览器对象详解一、参考资料二、认识浏览器运行态下的 js1.问:是否了解浏览器的执行态(分层设计)?2.BOM1.[location](https://developer.mozilla.org/zh-CN/docs/Web/API/Location)拓展方向:2.[History](https…...
异步电路后端实现流程(cdc signOff 后端做什么)
一种后端异步电路的signOff流程同步电路和异步电路分别signOff对于同步电路,后端会分析sta setup/hold,这里不在赘述。在该scenario下 异步电路是不会分析,也不会关注异步电路之间的走线在cdc scenario(mode)下sdc有一下设置:将所…...
Linux网络编程实战介绍
文章目录 前言一、Linux网络编程介绍二、文章目录总结前言 本专栏将为大家讲解Linux网络编程的知识,本专栏只需要有C语言基础即可学习,学习本专栏将大大提高你的C语言水平,当然了我也还会在ARM板子上进行实验将Linux驱动也和网络编程联系起来,方便大家去实现自己的项目。我…...
C++概述 课堂笔记
函数的重载在C语言中函数名是唯一的,不可以重复定义,当我们利用函数执行,功能相似的函数,我们也不能使用同一个函数,比如说,求整型的函数,不能用来求浮点型、字符型。在C中引入函数重载的概念&a…...
一文读懂SpringBoot整合Elasticsearch(一)
(本篇文章主要介绍Spring Boot如何整合Elasticsearch,包括基本配置、数据操作、搜索功能等方面。) 一、前言 Elasticsearch是一款全文搜索引擎,可用于快速、准确地存储、搜索和分析大量数据。而Spring Boot是一款快速开发框架&a…...
(数论)(枚举)(前缀和)1230. K倍区间
目录 题目链接 一些话 切入点 流程 套路 ac代码 题目链接 1230. K倍区间 - AcWing题库 ~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水&…...
万字带你深入理解 Linux 虚拟内存管理(下)
接上文:万字带你深入理解 Linux 虚拟内存管理(上) 6. 程序编译后的二进制文件如何映射到虚拟内存空间中 经过前边这么多小节的内容介绍,现在我们已经熟悉了进程虚拟内存空间的布局,以及内核如何管理这些虚拟内存区域&…...
【iOS】—— JSONModel源码学习
JSONModel 文章目录JSONModel关于JSONModel的用法initWithDictionary等方法load方法实现load方法调用时机init方法__setup__方法__inspectProperties:方法__doesDictionary方法__importDictionary方法关于JSONModel的用法 可以参考之前写的博客:【iOS】—— JSONMo…...
单片机怎么实现真正的多线程?
所谓多线程都是模拟的,本质都是单线程,因为cpu同一时刻只能执行一段代码。模拟的多线程就是任务之间快速切换,看起来像同时执行的样子。据说最近有多核的单片机,不过成本应该会高很多。对于模拟的多线程,我知道的有两种…...
【LeetCode】剑指 Offer(23)
目录 题目:剑指 Offer 46. 把数字翻译成字符串 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 46. 把…...
[免费专栏] 汽车威胁狩猎之不应该相信的几个威胁狩猎误区
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 汽车威胁狩猎专栏长期更新,本篇最新内容请前往: …...
Flutter 自适应布局一套代码适配手机和平板(十二)
一、为什么需要自适应布局? Flutter 可以运行在手机、平板、电脑和网页上,但这些设备的屏幕尺寸差异巨大。如果你只为手机设计界面,在大屏幕上就会浪费大量空间;如果只为大屏设计,在手机上又会挤成一团。 自适应布局的思路是:根据屏幕宽度,自动选择不同的布局方案。 二…...
iPhone换机必看:5种数据迁移方法实测对比(附避坑指南)
iPhone换机数据迁移全攻略:5种方法深度评测与避坑指南 每次拿到新款iPhone的兴奋感,总会被数据迁移的繁琐过程冲淡几分。作为一名经历过多次换机的"果粉",我深刻理解那种既期待新设备又担心数据丢失的复杂心情。本文将基于实测经验…...
当智能音箱只会说“对不起“:MiGPT项目让你的设备拥有真正AI对话能力
当智能音箱只会说"对不起":MiGPT项目让你的设备拥有真正AI对话能力 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 在智能…...
基于语音识别的智能家居设计(有完整资料)
资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T0852204C设计简介:本设计是基于语音识别的智能家居设计系统,主要实现以下功能:1.可以进行温湿度检测,并且可…...
从“安全孤岛”到“信任基石”:ibbot智体机灵如何重新定义AI智能体的安全范式
从“安全孤岛”到“信任基石”:ibbot智体机灵如何重新定义AI智能体的安全范式 引言:当安全成为AI智能体的“阿喀琉斯之踵” 在AI智能体技术快速发展的今天,我们见证了一个有趣的现象:功能越强大、集成度越高的智能体系统ÿ…...
python+Ai技术框架的美食交流宣传系统的设计与实现django flask
目录PythonAI技术框架的美食交流宣传系统设计与实现技术选型分析系统核心模块设计Django实现方案Flask实现方案AI集成方案部署架构设计开发路线图关键技术点性能优化建议测试方案项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方…...
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
阿里云 AI 中间件重磅发布:打通 AI 应用落地“最后一公里” 阿里云近期发布的 AI 中间件旨在解决 AI 应用落地中的关键问题,包括模型部署、性能优化、资源管理和服务集成。这一中间件通过标准化接口和工具链,显著降低了 AI 从开发到生产的门槛…...
2026食字号男士滋补品代工厂推荐
# 2026食字号男士滋补品代工厂推荐2026年国内男士滋补消费持续升级,品牌方推出食字号男士滋补品,代工选择直接决定产品竞争力。行业内多数代工厂仅能提供基础代工服务,无法解决产品差异化、吸收效率、合规安全等核心痛点,选对具备…...
sdut-程序设计基础Ⅰ-23级转专业第一次机测题
7-1 猴子吃桃分数 5作者 杨鑫单位 大连理工大学猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第…...
[测试] Phase 1 Notion Draft
新一轮技术发布潮已然到来,工程团队在实际落地过程中遇到的事故与挑战成为关注焦点。近期多个新框架和开源工具陆续上线,开发者们在真实环境下进行了深度实测,结果令人深思。 技术发布背后的工程事故 在某次新框架发布后,团队迅速…...
