pyqygraph编写一个实时读取sql sever数据库并可视化的界面
时间: 2023-08-11 08:05:09 浏览: 197
mysql 数据库 可视化界面
好的,和MySQL数据库类似,我们可以使用Python中的PyQt5和PyQtGraph库实现实时读取SQL Server数据库并可视化的界面。不同之处在于,我们需要使用Python中的pyodbc库来连接SQL Server数据库。
以下是代码示例:
```python
import sys
import pyodbc
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
import pyqtgraph as pg
class RealTimeDB(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 连接数据库
server = 'server_name'
database = 'database_name'
username = 'username'
password = 'password'
driver = '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect(f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password}')
cursor = cnxn.cursor()
# 执行SQL查询语句
cursor.execute("SELECT * FROM table_name")
result = cursor.fetchall()
# 创建PyQtGraph窗口
self.graphWidget = pg.PlotWidget()
self.graphWidget.setTitle("Real Time Data")
self.graphWidget.setLabel('left', 'Value', units='V')
self.graphWidget.setLabel('bottom', 'Time', units='s')
# 创建曲线
self.curve = self.graphWidget.plot(pen='r')
# 创建定时器,每隔1秒执行一次更新数据的函数
self.timer = pg.QtCore.QTimer()
self.timer.timeout.connect(self.updateData)
self.timer.start(1000)
# 创建布局
layout = QVBoxLayout()
layout.addWidget(self.graphWidget)
# 设置窗口布局
self.setLayout(layout)
# 显示窗口
self.show()
def updateData(self):
# 连接数据库
server = 'server_name'
database = 'database_name'
username = 'username'
password = 'password'
driver = '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect(f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password}')
cursor = cnxn.cursor()
# 执行SQL查询语句
cursor.execute("SELECT * FROM table_name")
result = cursor.fetchall()
# 获取x和y数据
x = [i[0] for i in result]
y = [i[1] for i in result]
# 更新曲线数据
self.curve.setData(x, y)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = RealTimeDB()
sys.exit(app.exec_())
```
在上述代码中,我们创建了一个名为RealTimeDB的类,继承自QWidget类。在initUI()方法中,我们连接了SQL Server数据库,创建了PyQtGraph窗口,并创建了一个定时器,每隔1秒钟执行一次updateData()方法。在updateData()方法中,我们再次连接数据库,执行SQL查询语句,并获取x和y数据。最后,我们更新曲线数据。
你可以根据自己的需求修改代码中的数据库连接信息和SQL查询语句,以及曲线的样式和颜色。
阅读全文