Python连接数据库,在UI上绘制柱状图
时间: 2023-11-19 22:15:58 浏览: 109
基于Python的南京二手房数据采集及分析可视化系统设计与实现 毕业设计-源码+数据库+使用文档(高分项目).zip
要在Python中连接数据库并在UI上绘制柱状图,可以使用以下步骤:
1. 安装必要的库:PyQt5、pymysql、matplotlib
2. 编写UI界面:可以使用Qt Designer或手写代码创建一个窗口,添加一个按钮和一个画布
3. 编写Python代码:连接数据库,获取数据,绘制柱状图,并将图形显示在UI界面的画布上
下面是一个简单的示例代码,演示如何连接MySQL数据库,读取数据,并在UI界面中绘制柱状图。
```
import sys
import pymysql
import matplotlib.pyplot as plt
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建UI界面
self.setWindowTitle("柱状图")
self.setGeometry(100, 100, 800, 600)
self.button = QPushButton("绘制柱状图", self)
self.button.setGeometry(10, 10, 120, 30)
self.canvas = FigureCanvas(plt.Figure(figsize=(6, 4)))
self.canvas.setParent(self)
self.canvas.move(150, 50)
# 绑定按钮点击事件
self.button.clicked.connect(self.plot_barchart)
def connect_db(self):
# 连接MySQL数据库
db = pymysql.connect(
host="localhost",
user="root",
password="password",
database="testdb"
)
return db
def read_data(self):
# 读取数据
db = self.connect_db()
cursor = db.cursor()
cursor.execute("SELECT name, score FROM students")
data = cursor.fetchall()
db.close()
return data
def plot_barchart(self):
# 绘制柱状图
data = self.read_data()
x = [d[0] for d in data]
y = [d[1] for d in data]
ax = self.canvas.figure.subplots()
ax.bar(x, y)
ax.set_title("学生成绩柱状图")
ax.set_xlabel("姓名")
ax.set_ylabel("成绩")
self.canvas.draw()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个窗口,添加了一个按钮和一个画布。当用户点击按钮时,程序会从MySQL数据库中读取数据,并绘制柱状图。注意,我们使用了PyQt5库来创建UI界面,使用了pymysql库来连接MySQL数据库,使用了matplotlib库来绘制柱状图,并使用了FigureCanvas来将图形显示在UI界面的画布上。
阅读全文