Python 图书管理系统:使用 PySide6 和 MySQL 实现图书搜索功能
使用 PySide6 和 MySQL 实现图书搜索功能
本教程将介绍如何使用 Python 的 PySide6 库和 MySQL 数据库构建一个简单的图书管理系统,实现图书搜索功能。我们将学习如何创建用户界面、连接数据库、执行查询并显示结果。
1. 导入必要的库
首先,我们需要导入必要的库。
import pymysql
import sys
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
from QtUser import User_Dialog
2. 创建主窗口类
接下来,我们创建一个 Oper_Book_Window 类,继承自 QMainWindow 类,用于表示主窗口。
class Oper_Book_Window(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
# 初始化UI界面
def initUI(self):
# 设置窗口标题和大小
self.setWindowTitle('图书操作界面')
self.resize(400, 300)
# 创建一个标签和一个文本框用于输入书名
self.label_bookname = QLabel('输入书名:')
self.edit_bookname = QLineEdit()
# 创建一个按钮用于搜索
self.btn_search = QPushButton('搜索')
self.btn_search.clicked.connect(self.search_bookname)
# 创建一个列表用于显示搜索结果
self.list_book = QListWidget()
# 创建一个垂直布局并将控件添加进去
vbox = QVBoxLayout()
vbox.addWidget(self.label_bookname)
vbox.addWidget(self.edit_bookname)
vbox.addWidget(self.btn_search)
vbox.addWidget(self.list_book)
# 创建一个QWidget窗口部件,并将垂直布局设置为其布局
widget = QWidget()
widget.setLayout(vbox)
# 将QWidget窗口部件设置为中心窗口部件
self.setCentralWidget(widget)
# 搜索书名
def search_bookname(self):
# 获取输入的书名
bookname = self.edit_bookname.text()
# 连接数据库
db = pymysql.connect('localhost', 'root', '123456', 'library')
cursor = db.cursor()
# 查询数据库
sql = 'SELECT * FROM LBook WHERE 书名 = '%s'' % bookname
try:
cursor.execute(sql)
results = cursor.fetchall()
if results:
# 如果找到了匹配的书名,则将结果添加到列表中
self.list_book.clear()
for row in results:
self.list_book.addItem(row[1])
else:
# 如果没有找到匹配的书名,则显示“无”
self.list_book.clear()
self.list_book.addItem('无')
except:
# 查询失败则提示错误信息
QMessageBox.warning(self, 'Error', '查询失败')
3. 运行程序
最后,我们创建一个 if __name__ == '__main__': 块,用于运行程序。
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Oper_Book_Window()
window.show()
sys.exit(app.exec_())
注意:
- 确保你已经安装了
pymysql和PySide6库。 - 替换代码中的数据库连接信息为你的实际信息。
- 确保你的数据库中存在名为
LBook的表,并且包含名为书名的字段。
运行程序后,你将看到一个带有文本框和按钮的窗口,输入书名并点击“搜索”按钮,就可以在列表中显示搜索结果。
更多功能:
你可以根据需要添加更多功能,例如:
- 添加图书
- 删除图书
- 修改图书信息
- 显示所有图书
- 分页显示结果
- 等等。
希望本教程对你有帮助!
原文地址: https://www.cveoy.top/t/topic/oNge 著作权归作者所有。请勿转载和采集!