当前位置:   article > 正文

PyQt5创建与MySQL数据库集成的应用程序_python pyqt5+mysql

python pyqt5+mysql

最近,对之前的mysql管理系统进行了更新升级,制作了一版关于车牌的管理系统!

(1)实现了对车牌和用户基本信息的增删改查的功能 !

(2)加入了对数据库的刷新和状态显示功能

(3)加入了完善的日志系统

(4)有导出功能(需要输入管理员密码)

在本教程中,我们将学习如何创建一个使用PyQt5的应用程序,该应用程序连接到MySQL数据库并执行基本的CRUD(创建、读取、更新、删除)操作。我们将涵盖以下步骤:

  1. 设置PyQt5应用程序
  2. 连接到MySQL数据库
  3. 在表格中显示数据
  4. 插入数据到数据库
  5. 更新数据库中的数据
  6. 删除数据库中的数据
  7. 将数据导出到Excel文件

一、创建一个主窗口类,继承自QMainWindow,并设置基本的UI:

  1. from PyQt5.QtWidgets import QApplication, QMainWindow
  2. class MainWindow(QMainWindow):
  3. def __init__(self):
  4. super(MainWindow, self).__init__()
  5. self.setWindowTitle("PyQt5 MySQL示例")
  6. self.setGeometry(100, 100, 800, 600)
  7. if __name__ == "__main__":
  8. import sys
  9. app = QApplication(sys.argv)
  10. window = MainWindow()
  11. window.show()
  12. sys.exit(app.exec_())

二、连接到MySQL数据库

  1. import pymysql
  2. class MainWindow(QMainWindow):
  3. def __init__(self):
  4. super(MainWindow, self).__init__()
  5. self.setWindowTitle("PyQt5 MySQL示例")
  6. self.setGeometry(100, 100, 800, 600)
  7. self.db = self.create_connection()
  8. def create_connection(self):
  9. try:
  10. connection = pymysql.connect(
  11. host="localhost", # 数据库主机名
  12. user="root", # 数据库用户名
  13. password="yourpassword", # 数据库密码
  14. database="yourdatabase" # 数据库名
  15. )
  16. print("成功连接到数据库") # 连接成功时打印信息
  17. return connection # 返回数据库连接对象
  18. except pymysql.MySQLError as e:
  19. print(f"连接数据库失败: {e}") # 连接失败时打印错误信息
  20. return None # 返回None表示连接失败

三、在表格中显示数据

  1. from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem
  2. class MainWindow(QMainWindow):
  3. def __init__(self):
  4. super(MainWindow, self).__init__()
  5. self.setWindowTitle("PyQt5 MySQL示例")
  6. self.setGeometry(100, 100, 800, 600)
  7. self.db = self.create_connection()
  8. self.table = QTableWidget(self)
  9. self.table.setGeometry(50, 50, 700, 500)
  10. self.search_all_data()
  11. def search_all_data(self):
  12. if self.db is None:
  13. return
  14. cursor = self.db.cursor()
  15. cursor.execute("SELECT name, sex, number, license, extime FROM yourtable")
  16. results = cursor.fetchall()
  17. self.table.setRowCount(len(results))
  18. self.table.setColumnCount(5)
  19. self.table.setHorizontalHeaderLabels(['姓名', '性别', '电话', '车牌号', '有效期'])
  20. for row_num, row_data in enumerate(results):
  21. for col_num, data in enumerate(row_data):
  22. self.table.setItem(row_num, col_num, QTableWidgetItem(str(data)))

四、插入数据到数据库

  1. from PyQt5.QtWidgets import QPushButton, QLineEdit, QVBoxLayout, QWidget
  2. class MainWindow(QMainWindow):
  3. def __init__(self):
  4. super(MainWindow, self).__init__()
  5. self.setWindowTitle("PyQt5 MySQL示例")
  6. self.setGeometry(100, 100, 800, 600)
  7. self.db = self.create_connection()
  8. self.table = QTableWidget(self)
  9. self.table.setGeometry(50, 50, 700, 400)
  10. self.input_name = QLineEdit(self)
  11. self.input_name.setPlaceholderText("姓名")
  12. self.input_sex = QLineEdit(self)
  13. self.input_sex.setPlaceholderText("性别")
  14. self.input_number = QLineEdit(self)
  15. self.input_number.setPlaceholderText("电话")
  16. self.input_license = QLineEdit(self)
  17. self.input_license.setPlaceholderText("车牌号")
  18. self.input_extime = QLineEdit(self)
  19. self.input_extime.setPlaceholderText("有效期 (YYYY-MM-DD)")
  20. self.add_button = QPushButton("添加", self)
  21. self.add_button.clicked.connect(self.insert_data)
  22. layout = QVBoxLayout()
  23. layout.addWidget(self.input_name)
  24. layout.addWidget(self.input_sex)
  25. layout.addWidget(self.input_number)
  26. layout.addWidget(self.input_license)
  27. layout.addWidget(self.input_extime)
  28. layout.addWidget(self.add_button)
  29. container = QWidget()
  30. container.setLayout(layout)
  31. container.setGeometry(50, 500, 700, 100)
  32. self.setCentralWidget(container)
  33. self.search_all_data()
  34. def insert_data(self):
  35. name = self.input_name.text()
  36. sex = self.input_sex.text()
  37. number = self.input_number.text()
  38. license = self.input_license.text()
  39. extime = self.input_extime.text()
  40. if self.db is None:
  41. return
  42. cursor = self.db.cursor()
  43. insert_sql = "INSERT INTO yourtable (name, sex, number, license, extime) VALUES (%s, %s, %s, %s, %s)"
  44. cursor.execute(insert_sql, (name, sex, number, license, extime))
  45. self.db.commit()
  46. self.search_all_data()

五、更新数据库中的数据

  1. def update_data(self, id, name, sex, number, license, extime):
  2. if self.db is None:
  3. return
  4. cursor = self.db.cursor()
  5. update_sql = "UPDATE yourtable SET name=%s, sex=%s, number=%s, license=%s, extime=%s WHERE id=%s"
  6. cursor.execute(update_sql, (name, sex, number, license, extime, id))
  7. self.db.commit()
  8. self.search_all_data()
'
运行

六、删除数据库中的数据

  1. def delete_data(self, id):
  2. if self.db is None:
  3. return
  4. cursor = self.db.cursor()
  5. delete_sql = "DELETE FROM yourtable WHERE id=%s"
  6. cursor.execute(delete_sql, (id,))
  7. self.db.commit()
  8. self.search_all_data()
'
运行

七、将数据导出到Excel文件

  1. import pandas as pd
  2. from PyQt5.QtWidgets import QFileDialog
  3. def export_data(self):
  4. if self.db is None:
  5. return
  6. cursor = self.db.cursor()
  7. cursor.execute("SELECT * FROM yourtable")
  8. results = cursor.fetchall()
  9. df = pd.DataFrame(results, columns=['ID', '姓名', '性别', '电话', '车牌号', '有效期'])
  10. file_path, _ = QFileDialog.getSaveFileName(self, '保存Excel文件', '', 'Excel 文件 (*.xlsx)')
  11. if file_path:
  12. df.to_excel(file_path, index=False)
'
运行

通过以上步骤,你已经学会了如何使用PyQt5创建一个连接MySQL数据库的应用程序,并实现基本的CRUD操作和数据导出功能。你可以根据需要扩展和定制这个应用程序。

有任何需要请私信我!私信,私信!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/843440
推荐阅读
相关标签
  

闽ICP备14008679号