运用mysql和pyqt用python写一个代码,实现一下要求:
时间: 2024-02-26 12:52:19 浏览: 112
Python+PyQt5+MySQL实现天气管理系统
好的,以下是一个简单的示例代码,实现一个基于PyQt和MySQL的简单图书管理系统:
```python
import sys
import pymysql
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QMessageBox, QTableWidget, QTableWidgetItem
class BookManager(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.initDB()
def initUI(self):
# 创建文本框和按钮
self.nameLabel = QLabel('书名')
self.nameEdit = QLineEdit()
self.authorLabel = QLabel('作者')
self.authorEdit = QLineEdit()
self.publisherLabel = QLabel('出版社')
self.publisherEdit = QLineEdit()
self.addButton = QPushButton('添加')
self.queryButton = QPushButton('查询')
# 创建表格
self.tableWidget = QTableWidget()
self.tableWidget.setColumnCount(3)
self.tableWidget.setHorizontalHeaderLabels(['书名', '作者', '出版社'])
# 创建布局
vbox = QVBoxLayout()
hbox1 = QHBoxLayout()
hbox1.addWidget(self.nameLabel)
hbox1.addWidget(self.nameEdit)
hbox1.addWidget(self.authorLabel)
hbox1.addWidget(self.authorEdit)
hbox1.addWidget(self.publisherLabel)
hbox1.addWidget(self.publisherEdit)
vbox.addLayout(hbox1)
hbox2 = QHBoxLayout()
hbox2.addWidget(self.addButton)
hbox2.addWidget(self.queryButton)
vbox.addLayout(hbox2)
vbox.addWidget(self.tableWidget)
self.setLayout(vbox)
# 连接信号和槽
self.addButton.clicked.connect(self.addBook)
self.queryButton.clicked.connect(self.queryBook)
def initDB(self):
# 连接数据库
self.conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test', charset='utf8')
self.cursor = self.conn.cursor()
def addBook(self):
# 获取文本框中的数据
name = self.nameEdit.text()
author = self.authorEdit.text()
publisher = self.publisherEdit.text()
# 执行SQL语句插入数据
sql = "INSERT INTO books (name, author, publisher) VALUES (%s, %s, %s)"
self.cursor.execute(sql, (name, author, publisher))
self.conn.commit()
# 清空文本框并弹出提示框
self.nameEdit.clear()
self.authorEdit.clear()
self.publisherEdit.clear()
QMessageBox.information(self, '信息', '添加成功')
def queryBook(self):
# 查询数据库中的数据
sql = "SELECT * FROM books"
self.cursor.execute(sql)
data = self.cursor.fetchall()
# 清空表格并填充数据
self.tableWidget.setRowCount(0)
for row in data:
nameItem = QTableWidgetItem(row[1])
authorItem = QTableWidgetItem(row[2])
publisherItem = QTableWidgetItem(row[3])
self.tableWidget.insertRow(0)
self.tableWidget.setItem(0, 0, nameItem)
self.tableWidget.setItem(0, 1, authorItem)
self.tableWidget.setItem(0, 2, publisherItem)
if __name__ == '__main__':
app = QApplication(sys.argv)
manager = BookManager()
manager.show()
sys.exit(app.exec_())
```
该示例代码实现了一个简单的图书管理系统,通过PyQt提供的GUI界面,用户可以输入书名、作者和出版社等信息,然后通过MySQL将这些信息保存到数据库中。同时,用户也可以查询数据库中保存的所有图书信息,并通过表格的形式展示出来。
需要注意的是,该示例代码只是一个简单的示例,具体的实现方式还需要根据实际需求进行调整和完善。
阅读全文