python导入数据库的数据怎么在qt界面里刷新_python连接pyqt5做的界面,连接MySQL实现增删查改和数据的自动更新...

这篇博客介绍了如何使用Python的PyQt5库创建GUI界面,并结合PyMySQL模块连接MySQL数据库,实现数据的增删查改功能。通过设置按钮事件,实现了数据的自动更新,确保界面数据与数据库保持同步。
摘要由CSDN通过智能技术生成

pycharm 2020.2.3

python 3.8

pyqt5 5.15.1实现功能所需的界面

界面Python代码如下

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):

def setupUi(self, MainWindow):

MainWindow.setObjectName("MainWindow")

MainWindow.resize(800, 600)

self.centralwidget = QtWidgets.QWidget(MainWindow)

self.centralwidget.setObjectName("centralwidget")

self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)

self.tableWidget.setGeometry(QtCore.QRect(0, 0, 341, 351))

self.tableWidget.setObjectName("tableWidget")

self.tableWidget.setColumnCount(2)

self.tableWidget.setRowCount(7)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(2, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(3, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(4, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(5, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(6, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setHorizontalHeaderItem(0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setHorizontalHeaderItem(1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(0, 0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(0, 1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(1, 0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(1, 1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(2, 0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(2, 1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(3, 0, item)

self.pushButton = QtWidgets.QPushButton(self.centralwidget)

self.pushButton.setGeometry(QtCore.QRect(460, 290, 101, 51))

self.pushButton.setObjectName("pushButton")

self.tableWidget_2 = QtWidgets.QTableWidget(self.centralwidget)

self.tableWidget_2.setGeometry(QtCore.QRect(10, 360, 331, 121))

self.tableWidget_2.setObjectName("tableWidget_2")

self.tableWidget_2.setColumnCount(2)

self.tableWidget_2.setRowCount(1)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setVerticalHeaderItem(0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setHorizontalHeaderItem(0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setHorizontalHeaderItem(1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setItem(0, 0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setItem(0, 1, item)

self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)

self.pushButton_2.setGeometry(QtCore.QRect(460, 360, 101, 61))

self.pushButton_2.setObjectName("pushButton_2")

self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)

self.pushButton_3.setGeometry(QtCore.QRect(460, 220, 101, 51))

self.pushButton_3.setObjectName("pushButton_3")

self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)

self.pushButton_4.setGeometry(QtCore.QRect(460, 440, 101, 61))

self.pushButton_4.setObjectName("pushButton_4")

self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)

self.pushButton_5.setGeometry(QtCore.QRect(460, 120, 91, 61))

self.pushButton_5.setObjectName("pushButton_5")

MainWindow.setCentralWidget(self.centralwidget)

self.menubar = QtWidgets.QMenuBar(MainWindow)

self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))

self.menubar.setObjectName("menubar")

MainWindow.setMenuBar(self.menubar)

self.statusbar = QtWidgets.QStatusBar(MainWindow)

self.statusbar.setObjectName("statusbar")

MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):

_translate = QtCore.QCoreApplication.translate

MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

item = self.tableWidget.verticalHeaderItem(0)

item.setText(_translate("MainWindow", "1"))

item = self.tableWidget.verticalHeaderItem(1)

item.setText(_translate("MainWindow", "2"))

item = self.tableWidget.verticalHeaderItem(2)

item.setText(_translate("MainWindow", "3"))

item = self.tableWidget.verticalHeaderItem(3)

item.setText(_translate("MainWindow", "4"))

item = self.tableWidget.verticalHeaderItem(4)

item.setText(_translate("MainWindow", "5"))

item = self.tableWidget.verticalHeaderItem(5)

item.setText(_translate("MainWindow", "6"))

item = self.tableWidget.verticalHeaderItem(6)

item.setText(_translate("MainWindow", "7"))

item = self.tableWidget.horizontalHeaderItem(0)

item.setText(_translate("MainWindow", "id"))

item = self.tableWidget.horizontalHeaderItem(1)

item.setText(_translate("MainWindow", "name"))

__sortingEnabled = self.tableWidget.isSortingEnabled()

self.tableWidget.setSortingEnabled(False)

self.tableWidget.setSortingEnabled(__sortingEnabled)

self.pushButton.setText(_translate("MainWindow", "添加数据"))

item = self.tableWidget_2.verticalHeaderItem(0)

item.setText(_translate("MainWindow", "1"))

item = self.tableWidget_2.horizontalHeaderItem(0)

item.setText(_translate("MainWindow", "id"))

item = self.tableWidget_2.horizontalHeaderItem(1)

item.setText(_translate("MainWindow", "name"))

__sortingEnabled = self.tableWidget_2.isSortingEnabled()

self.tableWidget_2.setSortingEnabled(False)

self.tableWidget_2.setSortingEnabled(__sortingEnabled)

self.pushButton_2.setText(_translate("MainWindow", "显示数据"))

self.pushButton_3.setText(_translate("MainWindow", "删除数据"))

self.pushButton_4.setText(_translate("MainWindow", " 修改数据"))

self.pushButton_5.setText(_translate("MainWindow", "清空页面"))

实现增删查改:

先安装pymsql

命令:pip install pymysql

安装完成后开头引用

import pymysql

之后在界面代码函数retranslateUi(self, MainWindow)里定义add(增添),delete(删除),modify(修改),show(显示),clear(清空)五个按钮,和与之相连接的函数的名字

五大按钮

add添加函数添加数据界面

添加数据:600 six

添加前:

添加后:

代码如下

结尾是定义的show显示函数,show函数尾部写了关闭游标,关闭连接的代码,所以add函数结尾就不用写相关代码了,同自定义的delete删除函数,modify修改函数

show显示函数

delete删除函数

输入需要删除行的id值

删除第一行数据

删除后:

删除函数代码:

modify修改函数:

修改第一行的three为seven

修改前:

修改后:

修改函数代码:

clear清空函数,用的是Python自带的clear()函数,用来清空页面上表格中显示的数据,并非是对数据库内部数值的清空

清空前:

清空后:

清空函数代码

最后的代码是通用的,只要是pyqt5生成的py文件,加上这段代码,就能稳定生成界面

最后附上整个文件的完整代码

import pymysql

from PyQt5 import QtCore, QtGui, QtWidgets

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow

class Ui_MainWindow(object):

def setupUi(self, MainWindow):

MainWindow.setObjectName("MainWindow")

MainWindow.resize(800, 600)

self.centralwidget = QtWidgets.QWidget(MainWindow)

self.centralwidget.setObjectName("centralwidget")

self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)

self.tableWidget.setGeometry(QtCore.QRect(0, 0, 341, 351))

self.tableWidget.setObjectName("tableWidget")

self.tableWidget.setColumnCount(2)

self.tableWidget.setRowCount(7)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(2, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(3, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(4, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(5, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setVerticalHeaderItem(6, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setHorizontalHeaderItem(0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setHorizontalHeaderItem(1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(0, 0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(0, 1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(1, 0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(1, 1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(2, 0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(2, 1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget.setItem(3, 0, item)

self.pushButton = QtWidgets.QPushButton(self.centralwidget)

self.pushButton.setGeometry(QtCore.QRect(460, 290, 101, 51))

self.pushButton.setObjectName("pushButton")

self.tableWidget_2 = QtWidgets.QTableWidget(self.centralwidget)

self.tableWidget_2.setGeometry(QtCore.QRect(10, 360, 331, 121))

self.tableWidget_2.setObjectName("tableWidget_2")

self.tableWidget_2.setColumnCount(2)

self.tableWidget_2.setRowCount(1)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setVerticalHeaderItem(0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setHorizontalHeaderItem(0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setHorizontalHeaderItem(1, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setItem(0, 0, item)

item = QtWidgets.QTableWidgetItem()

self.tableWidget_2.setItem(0, 1, item)

self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)

self.pushButton_2.setGeometry(QtCore.QRect(460, 360, 101, 61))

self.pushButton_2.setObjectName("pushButton_2")

self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)

self.pushButton_3.setGeometry(QtCore.QRect(460, 220, 101, 51))

self.pushButton_3.setObjectName("pushButton_3")

self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)

self.pushButton_4.setGeometry(QtCore.QRect(460, 440, 101, 61))

self.pushButton_4.setObjectName("pushButton_4")

self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)

self.pushButton_5.setGeometry(QtCore.QRect(460, 120, 91, 61))

self.pushButton_5.setObjectName("pushButton_5")

MainWindow.setCentralWidget(self.centralwidget)

self.menubar = QtWidgets.QMenuBar(MainWindow)

self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))

self.menubar.setObjectName("menubar")

MainWindow.setMenuBar(self.menubar)

self.statusbar = QtWidgets.QStatusBar(MainWindow)

self.statusbar.setObjectName("statusbar")

MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):

_translate = QtCore.QCoreApplication.translate

MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

item = self.tableWidget.verticalHeaderItem(0)

item.setText(_translate("MainWindow", "1"))

item = self.tableWidget.verticalHeaderItem(1)

item.setText(_translate("MainWindow", "2"))

item = self.tableWidget.verticalHeaderItem(2)

item.setText(_translate("MainWindow", "3"))

item = self.tableWidget.verticalHeaderItem(3)

item.setText(_translate("MainWindow", "4"))

item = self.tableWidget.verticalHeaderItem(4)

item.setText(_translate("MainWindow", "5"))

item = self.tableWidget.verticalHeaderItem(5)

item.setText(_translate("MainWindow", "6"))

item = self.tableWidget.verticalHeaderItem(6)

item.setText(_translate("MainWindow", "7"))

item = self.tableWidget.horizontalHeaderItem(0)

item.setText(_translate("MainWindow", "id"))

item = self.tableWidget.horizontalHeaderItem(1)

item.setText(_translate("MainWindow", "name"))

__sortingEnabled = self.tableWidget.isSortingEnabled()

self.tableWidget.setSortingEnabled(False)

self.tableWidget.setSortingEnabled(__sortingEnabled)

self.pushButton.setText(_translate("MainWindow", "添加数据"))

item = self.tableWidget_2.verticalHeaderItem(0)

item.setText(_translate("MainWindow", "1"))

item = self.tableWidget_2.horizontalHeaderItem(0)

item.setText(_translate("MainWindow", "id"))

item = self.tableWidget_2.horizontalHeaderItem(1)

item.setText(_translate("MainWindow", "name"))

__sortingEnabled = self.tableWidget_2.isSortingEnabled()

self.tableWidget_2.setSortingEnabled(False)

self.tableWidget_2.setSortingEnabled(__sortingEnabled)

self.pushButton_2.setText(_translate("MainWindow", "显示数据"))

self.pushButton_3.setText(_translate("MainWindow", "删除数据"))

self.pushButton_4.setText(_translate("MainWindow", " 修改数据"))

self.pushButton_5.setText(_translate("MainWindow", "清空页面"))

self.pushButton.clicked.connect(self.add)#添加

self.pushButton_2.clicked.connect(self.show)#显示

self.pushButton_3.clicked.connect(self.delete)#删除

self.pushButton_4.clicked.connect(self.modify)#修改

self.pushButton_5.clicked.connect(self.clear)#清空

#添加函数

def add(self):

conn = pymysql.connect(host='127.0.0.1', user='root', password='1234'

, port=3306#默认值

, db='work'#数据库名

, charset='utf8')

cur = conn.cursor()#创建游标

id = self.tableWidget_2.item(0, 0).text()

# 将输入用的表的第0行第0列的所输入在上面的数据赋值给id变量(计算机默认从0开始)

name = self.tableWidget_2.item(0, 1).text()#将第0行第1列所输入的数据赋值给name

sql = "INSERT INTO work1 (id,name) VALUES ("+ id +",'"+ name+ "')"

# insert into添加的数据即为赋值后id和name的值

cur.execute(sql)#执行SQL语句

conn.commit()#即connection.commit,上传有效数据

self.clear()#执行自定义的清空函数

self.show()#执行自定义的显示当前数据库数据的函数

#show显示函数

def show(self):

conn = pymysql.connect(host='127.0.0.1', user='root', password='1234'

, port=3306

, db='work'

, charset='utf8')

cur = conn.cursor()

sql = "select * from work1"#从work1表中获取所有数据

cur.execute(sql)

data = cur.fetchall()#获取到的数据以元组的形式赋值给data

for i in range(len(data)):#遍历

for j in range(len(data[i])):

self.tableWidget.setItem(i,j,QtWidgets.QTableWidgetItem(str(data[i][j])))

#for的嵌套循环,依次在表的每个格中输出数据

cur.close()

conn.close()

def delete(self):

conn = pymysql.connect(host='127.0.0.1', user='root', password='1234'

, port=3306

, db='work'

, charset='utf8')

cur = conn.cursor()

id = self.tableWidget_2.item(0, 0).text()#只输入需删除行的id值即可

sql="delete from work1 where id=" + id#删除work1表中指定id的列

cur.execute(sql)

conn.commit()

self.clear()

self.show()#自动更新,清空后全显

def modify(self):

conn = pymysql.connect(host='127.0.0.1', user='root', password='1234'

, port=3306

, db='work'

, charset='utf8')

cur = conn.cursor()

id = self.tableWidget_2.item(0, 0).text()

name = self.tableWidget_2.item(0, 1).text()

sql="update work1 set name='" + name + "' where id=" + id#修改指定id的那一行的name列的值

cur.execute(sql)

conn.commit()

self.clear()

self.show()

def clear(self):

self.tableWidget.clear()#清空第一个表格的数据

self.tableWidget_2.clear()#清空第二个表格的数据

if __name__ == '__main__':#使pyqt5的界面在Python中顺利运行的通用代码

app = QApplication(sys.argv)

MainWindow = QMainWindow()

ui = Ui_MainWindow()

ui.setupUi(MainWindow)

MainWindow.show()

sys.exit(app.exec_())

注意:从我的pycharm里复制出来直接粘贴,可能造成格式上的缩进错误,整个代码当前版本是没有问题的,完全可行

最后的最后,感谢舍友的神助攻,助我弄懂实验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值