PyQt5数据库开发2 5.2 QSqlRelationalTableModel

news2024/12/23 19:12:42

目录

一、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 

五、字段列表测试 

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

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

相关文章

[计算机网络(第八版)]第一章 概述(章节测试/章节作业)

随堂作业 练习版(无答案版) 1.2 因特网概述 1【单选题】因特网的前身是1969年创建的第一个分组交换网 A、internetB、InternetC、NSFNETD、ARPANET 2【单选题】因特网采用的核心技术是 A、TCP/IPB、局域网技术C、远程通信技术D、光纤技术 1.3 三种交换方式:电路…

mysql数据库表的创建与查看

mysql数据库表的创建与查看 一、mysql查看 查看所有数据库 show databases切换数据库 use 数据库名查看该数据库下所有的表名 show tables查看表的结构 desc 表名二、mysq创建 创建数据库 create database 数据库名;创建数据库设置编码 drop database if EXISTS dbname; creat…

Gehpi的网络布局

Gehpi的网络布局1. 力引导布局2. 辅助布局布局是网络可视化中的重要概念,指将点和边通过某种策略进行排布,应尽可能满足以下4个原则: 节点均匀分布在有限的区域内避免边的交叉和弯曲保持边的长度一致整体布局能反映图内在的特性 Gephi的布局…

flask入门-3.Flask操作数据库

3. Flask操作数据库 1. 连接数据库 首先下载 MySQL数据库 其次下载对应的包: pip install pymysql pip install flask-sqlalchemy在 app.py 中进行连接测试 from flask import Flask, request, render_template from flask_sqlalchemy import SQLAlchemyhostname "1…

Facebook广告投放运营中的关键成功因素是什么?

在当今数字化的时代,广告投放已经成为了各种企业获取市场份额和增加品牌曝光的重要手段之一。Facebook作为全球最大的社交媒体平台之一,其广告投放运营的成功,将直接影响企业的品牌推广和市场营销效果。本文将探讨Facebook广告投放运营中的关…

浅谈光流跟踪之KLT稀疏光流跟踪算法

0 简介 在学习vins-mono过程中,算法前端采用基于KLT光流的跟踪方法,对光流和KLT光流进行简单的总结。包括LK光流跟踪算法原理,基于金字塔改进的LK光流跟踪,KLT光流跟踪算法,以及在光流跟踪时使用的角点检测算法Harris…

追梦之旅【数据结构篇】——详解C语言实现链队列

详解C语言实现链队列~😎前言🙌整体实现内容分析💞预备小知识🙌1.链队列头文件编写🙌2.链队列功能文件(Queue.c )编写:🙌1)初始化函数实现2)销毁函…

【一些回忆】2022.02.26-2023.02.26 一个普通男孩的365天

💃🏼 本人简介:男 👶🏼 年龄:18 🤞 作者:那就叫我亮亮叭 📕 专栏:一些回忆 为什么选择在这个时间节点回忆一下呢? 一是因为今天距离2023高考仅剩1…

华为OD机试题,用 Java 解【删除字符串中出现次数最少的字符】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

Linux内核内存相关问题,这一篇让你彻底了解

linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍 linux 内存组织结构和页面布局,内存碎片产生原因和优化算法,linux 内核几种内存管理的方法,内存使用…

排错工具ping和trace(电子科技大学TCP/IP实验四)

一.实验目的 1、了解网络连通性测试的方法和工作原理 2、了解网络路径跟踪的方法和工作原理 3、掌握 MTU 的概念和 IP 分片操作 4、掌握 IP 分组生存时间(TTL)的含义和作用 5、掌握路由表的作用和路由查找算法 二.预备知识 …

[SQL Statements] 基本的SQL知识 之DDL针对数据库的基本操作

SQL Statements SQL语句的学习 之 DDL针对数据库的基本操作 什么是database 在 MySQL 中,Database(数据库)是一组有组织的数据集合,可以存储和管理相关数据的容器。一个数据库可以包含多个表(Table)&…

如何用 chatGPT,给大家来一个自我介绍

大家好,我是不吃西红柿的无线机械键盘,我的名字叫 Keychron K3 Pro。今天,我通过西红柿主人的手,使用 chatGPT 来介绍一下我自己。我的与众不同 我是由精密机械元件制作而成,并采用抗键渗设计,以提供更快、…

电子科技大学网络协议(TCP/IP作业答案)--网工(五次作业汇总)

目录 作业1:OSI/RM、TCP/IP编址和底层网络技术 作业2:IP地址规划与路由选择 作业3:ARP、IP、ICMP 作业4:UDP、Routing Protocol 作业五 作业1:OSI/RM、TCP/IP编址和底层网络技术 物理地址属于OSI/RM的哪一层&…

关于Linux内存管理的详细介绍,这篇万字长文值得你的收藏点赞

Linux内存管理一、Linux内存管理概述1.1 什么是内存管理1.2 内存管理的重要性1.3 内存管理的组成部分二、物理内存管理2.1 什么是物理内存2.2 物理内存管理方式2.2.1 连续内存管理2.2.2 非连续内存管理2.3 物理内存管理相关的函数及示例三、虚拟内存管理3.1 什么是虚拟内存3.2 …

HTML常用基础内容总结

文章目录一、对HTML的感性认知前置知识什么是web前端,什么是web后端前端技术栈、后端技术栈开发与运行的区别浏览器的功能是什么简介写一个简单可运行的的html代码前端开发方式二、VSCode的简单使用三、常用的HTML标签最最基本的HTML结构HTML代码特点注释标签标题标…

「JVM 高效并发」Java 内存模型

Amdahl 定律代替摩尔定律成为了计算机性能发展的新源动力,也是人类压榨计算机运算能力的最有力武器; 摩尔定律,描述处理器晶体管数量与运行效率之间的发展关系;Amdahl 定律,描述系统并行化与串行化的比重与系统运算加…

这9道软件测试面试题,就能刷掉90%的软件测试员

转眼就要到“金三银四”了,没点真本事真技术,没点面试经验,不了解点职场套路,如何过五关斩六将?如何打败面试官?如何拿下那梦寐以求的offer? 如果你的跳槽意向已经很确定,那么请往下…

【python量化】大幅提升预测性能,将NSTransformer用于股价预测

写在前面NSTransformer模型来自NIPS 2022的一篇paper《Non-stationary Transformers: Exploring the Stationarity in Time Series Forecasting》。NSTransformer的目的主要是为了解决其他方法出现过平稳化处理的问题。其通过提出序列平稳化以及去平稳化注意力机制可以使得模型…

我眼中的柔宇科技

关注、星标公众号,直达精彩内容来源:技术让梦想更伟大作者:李肖遥很早就知道了柔宇科技,当时是因为知道创始人刘自鸿,23岁清华本硕毕业,26岁获斯坦福大学电子工程博士学位,历时不超过3年&#x…