pyqt5数据库使用详细教程(打包解决方案)

1. Pyqt5数据库使用详细教程

PyQt5是一个用来快速地创建 Python GUI 应用程序的工具包,结合 PyQt5 和数据库,将大大提高应用程序的功能性和适用性。在这篇教程中,我们将学习如何使用 PyQt5 来操作数据库。

1.1 安装PyQt5和数据库驱动

在开始使用 PyQt5 和数据库之前,需要先安装 PyQt5 和数据库驱动。在本篇教程中,我们将以 MySQL 工具为例进行操作。此外,我们还需要安装 PyQt5 和 PyMySQL 库。下面是相应的代码:

pip install pyqt5

pip install pymysql

1.2 创建数据库

我们需要创建一个数据库以存储数据。在本例中,我们将创建一个名为 testdb 的数据库。

CREATE DATABASE testdb;

1.3 创建表格

创建一个名为 employee 的表格,并添加一些数据。

CREATE TABLE employee (

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50),

birthdate DATE,

salary INT

);

INSERT INTO employee (name, birthdate, salary) VALUES

("张三", "1990-01-01", 2000),

("李四", "1991-02-02", 2500),

("王五", "1992-03-03", 3000);

1.4 PyQt5界面设计

我们将使用 PyQt5 创建一个简单的用户界面,以进行数据库操作。下面是相应的代码:

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QHBoxLayout, QVBoxLayout, QTableWidget, QTableWidgetItem, QPushButton, QLabel, QLineEdit

import sys

import pymysql

class Window(QMainWindow):

def __init__(self):

super().__init__()

self.setGeometry(100, 100, 600, 400)

self.setWindowTitle("PyQt5 Database Tutorial")

self.initUI()

self.show()

def initUI(self):

# 水平、垂直布局

layout = QVBoxLayout()

# 搜索框布局

search_layout = QHBoxLayout()

self.search_input = QLineEdit()

self.search_btn = QPushButton("搜索")

self.search_btn.clicked.connect(self.search_employee)

search_layout.addWidget(QLabel("姓名:"))

search_layout.addWidget(self.search_input)

search_layout.addWidget(self.search_btn)

layout.addLayout(search_layout)

# 表格

self.table = QTableWidget()

self.table.setColumnCount(4)

self.table.setHorizontalHeaderLabels(["ID", "姓名", "生日", "薪资"])

layout.addWidget(self.table)

# 添加、修改、删除按钮

buttons_layout = QHBoxLayout()

self.add_btn = QPushButton("添加")

self.add_btn.clicked.connect(self.add_employee)

self.update_btn = QPushButton("修改")

self.update_btn.clicked.connect(self.update_employee)

self.delete_btn = QPushButton("删除")

self.delete_btn.clicked.connect(self.delete_employee)

buttons_layout.addWidget(self.add_btn)

buttons_layout.addWidget(self.update_btn)

buttons_layout.addWidget(self.delete_btn)

layout.addLayout(buttons_layout)

# 中央窗口

central_widget = QWidget()

central_widget.setLayout(layout)

self.setCentralWidget(central_widget)

# 搜索

def search_employee(self):

name = self.search_input.text()

# 连接数据库

conn = pymysql.connect(

host="localhost",

user="root",

password="root",

database="testdb"

)

cursor = conn.cursor()

# 搜索数据

query = f"SELECT * FROM employee WHERE name LIKE '%{name}%'"

cursor.execute(query)

rows = cursor.fetchall()

# 清空表格

self.table.setRowCount(0)

# 在表格中显示数据

for row_number, row_data in enumerate(rows):

self.table.insertRow(row_number)

for column_number, column_data in enumerate(row_data):

self.table.setItem(row_number, column_number, QTableWidgetItem(str(column_data)))

conn.close()

# 添加

def add_employee(self):

name = self.search_input.text()

birthdate = self.birthdate_input.text()

salary = self.salary_input.text()

# 连接数据库

conn = pymysql.connect(

host="localhost",

user="root",

password="root",

database="testdb"

)

cursor = conn.cursor()

# 添加数据

query = f"INSERT INTO employee (name, birthdate, salary) VALUES ('{name}', '{birthdate}', {salary})"

cursor.execute(query)

conn.commit()

conn.close()

# 更新表格

self.search_employee()

# 修改

def update_employee(self):

pass

# 删除

def delete_employee(self):

pass

if __name__ == '__main__':

app = QApplication(sys.argv)

window = Window()

sys.exit(app.exec_())

1.5 连接数据库

在上述代码中,我们使用 pymysql 模块来连接 MySQL 数据库。我们需要提供主机名、用户名、密码和数据库名等信息。下面是连接数据库的代码:

conn = pymysql.connect(

host="localhost",

user="root",

password="root",

database="testdb"

)

cursor = conn.cursor()

1.6 搜索数据

为了从数据库中检索数据,我们需要使用 SELECT 语句。在本例中,我们将在员工表格中搜索名字中包含关键字的员工信息。下面是搜索数据的代码:

query = f"SELECT * FROM employee WHERE name LIKE '%{name}%'"

cursor.execute(query)

rows = cursor.fetchall()

1.7 插入数据

为了将数据插入到数据库中,我们需要使用 INSERT INTO 语句。在本例中,我们将添加员工数据。下面是添加数据的代码:

query = f"INSERT INTO employee (name, birthdate, salary) VALUES ('{name}', '{birthdate}', {salary})"

cursor.execute(query)

conn.commit()

1.8 更新数据

为了更新数据库中的数据,我们需要使用 UPDATE 语句。在本例中,我们将更新员工数据。下面是更新数据的代码:

query = f"UPDATE employee SET ... WHERE ..."

cursor.execute(query)

conn.commit()

1.9 删除数据

为了从数据库中删除数据,我们需要使用 DELETE 语句。在本例中,我们将删除员工数据。下面是删除数据的代码:

query = f"DELETE FROM employee WHERE ..."

cursor.execute(query)

conn.commit()

1.10 打包解决方案

在完成应用程序的开发后,我们可以使用 PyInstaller 来将其打包成一个独立的可执行文件。

首先,我们需要安装 PyInstaller:

pip install pyinstaller

然后,转到应用程序的根目录,并运行以下命令:

pyinstaller --onefile --windowed main.py

打包成功后,在 dist 目录下会生成一个新的可执行文件。

2. 总结

PyQt5 和数据库的结合为开发 Python GUI 应用程序提供了无限的可能。在本篇教程中,我们学习了如何使用 PyQt5 操作 MySQL 数据库,并创建了一个简单的用户界面进行操作。我们还使用 PyInstaller 将应用程序打包成独立的可执行文件。

后端开发标签