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项目

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第1张图片

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第2张图片

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第3张图片

MainWindow的windowTitle属性设为bkj5-2 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第4张图片

2. 添加组件

添加一个tableView

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第5张图片

3. 添加资源 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第6张图片

4. 添加Action 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第7张图片

注意除了actOpenDB和actQuit之外,其他Action的enabled属性取消 

5. 添加工具栏 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第8张图片

6. 添加菜单项

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第9张图片PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第10张图片

7. 添加退出功能

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第11张图片

二、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. 单表数据

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第12张图片

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第13张图片

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第14张图片

4. 联合查询 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第15张图片

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第16张图片

三、代码实现

1. 新建项目目录

新建e:\baikejia\bkj5-2目录

2. 编译窗体文件和资源文件

拷贝项目5-1里面的compile.bat到项目目录中,运行。

3. 新建Eric6项目

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第17张图片

4. 新建myMainWindow.py文件

输入以下内容

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第18张图片

5. 新建appMain.py文件

内容如下

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第19张图片

6. openTable函数

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

 PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第20张图片

 代码如下

 PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第21张图片

7. 测试opentable函数

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第22张图片

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

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第23张图片

8. 添加do_currentChanged槽函数

8.1 import新模块

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第24张图片

8.2 添加函数 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第25张图片

8.3 在openTable函数中添加代码 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第26张图片

9. 添加记录代码 

 

10. 插入记录代码 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第27张图片

11. 删除记录代码 

12. 保存修改代码 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第28张图片

13. 取消修改代码 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第29张图片

14. 字段列表代码 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第30张图片

四、修改记录代码测试

1. 在数据库里面查令狐冲的数据

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第31张图片

2. 修改

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

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第32张图片

改好后点保存 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第33张图片

3. 回到数据库里面再查 

 PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第34张图片

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第35张图片

显示是显示的学院名和专业名,在后台数据库改的还是原来的students 

五、字段列表测试 

PyQt5数据库开发2 5.2 QSqlRelationalTableModel_第36张图片

你可能感兴趣的:(Python,pyqt,ui,数据库,python)