使用Python连接MySQL数据库并创建GUI界面,用pyqt5库实现
时间: 2024-04-29 21:20:52 浏览: 175
1. 安装PyQt5库和MySQL连接库
在终端或命令行中输入以下命令来安装PyQt5和MySQL连接库:
```bash
pip install pyqt5 pymysql
```
2. 创建MySQL数据库和表格
在MySQL中创建一个数据库和一个表格。这里创建一个名为`test`的数据库和一个名为`students`的表格,表格有两个字段:`id`和`name`。
```sql
CREATE DATABASE test;
USE test;
CREATE TABLE students (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
```
3. 编写Python代码
```python
import sys
import pymysql
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QTableWidgetItem
from PyQt5.uic import loadUi
# 连接MySQL数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
loadUi('mainwindow.ui', self) # 加载UI文件
self.initUI()
def initUI(self):
self.setWindowTitle('MySQL GUI') # 设置窗口标题
self.addButton.clicked.connect(self.addStudent) # 添加学生按钮点击事件
self.showButton.clicked.connect(self.showStudents) # 显示学生按钮点击事件
def addStudent(self):
name = self.nameEdit.text() # 获取输入的名字
if not name: # 名字为空,弹出提示框
QMessageBox.warning(self, '警告', '名字不能为空')
return
try:
with conn.cursor() as cursor:
sql = 'INSERT INTO students (name) VALUES (%s)' # 插入数据的SQL语句
cursor.execute(sql, name) # 执行SQL语句
conn.commit() # 提交事务
QMessageBox.information(self, '提示', '添加学生成功')
self.nameEdit.clear() # 清空输入框
except Exception as e:
QMessageBox.critical(self, '错误', str(e))
def showStudents(self):
self.tableWidget.clearContents() # 清空表格
self.tableWidget.setRowCount(0) # 设置行数为0
try:
with conn.cursor() as cursor:
sql = 'SELECT * FROM students' # 查询数据的SQL语句
cursor.execute(sql) # 执行SQL语句
results = cursor.fetchall() # 获取所有结果
for row, result in enumerate(results):
id = QTableWidgetItem(str(result['id'])) # 创建ID单元格
name = QTableWidgetItem(result['name']) # 创建名字单元格
self.tableWidget.insertRow(row) # 插入一行
self.tableWidget.setItem(row, 0, id) # 设置ID单元格
self.tableWidget.setItem(row, 1, name) # 设置名字单元格
except Exception as e:
QMessageBox.critical(self, '错误', str(e))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
4. 创建UI文件
在命令行中输入以下命令来创建UI文件:
```bash
pyuic5 mainwindow.ui -o mainwindow.py
```
其中,`mainwindow.ui`是UI文件的文件名,`mainwindow.py`是生成的Python代码的文件名。
5. 运行程序
在命令行中输入以下命令来运行程序:
```bash
python main.py
```
其中,`main.py`是程序的文件名。运行程序后,可以添加学生和显示学生。添加学生时,输入名字并点击添加学生按钮即可,如果名字为空,会弹出警告框;显示学生时,点击显示学生按钮即可,会查询所有学生并显示在表格中。
阅读全文