本文根据一个项目实例,记录分享一下python将数据库的内容提取显示到程序界面的过程及相关设置,探索python操作数据库的用法。主要分享内容:

1、显示数据库内容。

2、修改数据库内容。

3、表格控件指定滑块位置。

4、自定义右键菜单。

使用环境:python3.7 + Mysql5 +PyQt5

针对人群:初学者或有资料查阅需求者,资深人士勿喷,敬请提出宝贵意见,本人虚心接受。

56c4fa611fc6201b22f0f2af5270ed10.png

前期准备:

1、创建软件界面

2、与数据库建立连接

1、创建软件界面:

e5fdd903fc427eef741a1f5f42abd24a.png

上图为使用PyQt5相关模块创建的工程造价系统界面,使用的模块及功能:

1、QMainWindow模块:绘制带菜单、工具栏、状态栏的整体框架。

2、QTreeWidget模块:绘制左侧导航栏。

3、QTableWidgetItem模块:绘制中间用于显示数据的表格。

4、QComboBox, QPushButton模块:绘制下拉框、按钮控件。

5、QSplitter模块:设置各种控件的摆放组合方式,可鼠标拖动调整窗口大小。

6、QMessageBox模块:设置交互弹框。

具体界面绘制过程不是本文重点,暂不详述。

要建立与数据库的连接,首先得有具体的数据库,本案例在本机用mysql建立自己的数据库,然后再与软件项目进行连接。

2.1、自建数据库

下载安装好Mysql后,建议再装一个可视化工具,我用的Navicat for Mysql,感觉不错。界面见下图:

be6608df64a7dbd1f0e2a1788442d971.png

在这个工具界面下,可以很方便的创建修改数据表。有了工具后,接下来就是关键的填入数据。很多时候,客户或者我们自己的数据是放在excel里的,我们可以通过Navicat 的导入向导,很方便的将excel数据导入到数据库:

7fab73762af19127c7f094d8598251b6.png

跟着向导,只需简单几步就可完成数据导入。

2.2、连接数据库

导入pymysql库,将库的连接等功能写入自建的类。本案通过读取.cfg配置文件(有关配置文件的知识,可参见),获得连接库需用到的5个参数,在_init_初始类属性时,建立连接,代码如下:

其中,sql_config.cfg文件内容为:

fd48900647dfb04b83e12a7d8a6afa93.png

若不用配置文件,直接把5个参数写在程序里也可以,代码如下,貌似更简单:

一、显示数据库内容

功能:在软件界面,点击左侧导航栏,找到数据库中与展开项对应的表,将数据显示在中间表格里。若目标表不存在,提示创建。

实现步骤:

创建导航栏;→ 点击导航栏,获取表名;→ 查询数据库,找到表,显示内容

具体过程:

1、用树形控件创建导航栏,数据来源为数据库

数据库里导航栏数据源样式为:

a9a0c9bf46bb4560e9daea76f7cb50ad.png3fbfcc0422bceedadaf4ca5a84ed1afe.png

用代码手动逐条输入是不可接受的,根据第一列数据长度特点,采用下面的批量创建方式,其中fl为传递的参数,意思是“路基”或者其他专业。

2、设置点击树形控件条目的信号槽函数,将数据库表内容提取后显示在表格控件。

设置左键单击导航栏时,触发函数showtreesql()。具体获取数据功能在函数里设置。

3、读取数据库内容到表格的功能函数代码:

判断数据库是否存在某表的函数块:

4、左键双击导航栏时,触发信号槽,当不存在目标表时,提示创建新表:

二、修改数据库内容

1、设置保存按钮

e30cd7cb7a888fc5753d73e38f2d3bd8.png

2、编写保存按钮点击函数块

三、表格控件指定滑块位置

设置下拉框选择项目后,根据项目名让中间下部的表格上下滑块移动至将当前项目显示在第一位:

1a1931351078bed882ceda6a7a4d286e.png

设置信号槽:self.decxcomb2.currentTextChanged[str].connect(self.set_table2)

设置功能块代码:

四、自定义右键菜单

表格输入时,有时候难免存在需要插入行、删除行的要求,最常见的就是下面的右键菜单处理了。

1eebeb2e31575a1065521b84a51aacc1.gif

实现过程:

1)设置表格控件能响应右键

2)设置右键信号槽函数

3)函数功能块设置

欢迎关注我们!

部分文字与图片来源于网络,如有版权请联系删除!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐