You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现基于MySQL数据库的Plotly实时更新图表?

实现Plotly实时更新MySQL数据图表

你的代码目前是一次性查询数据库并生成静态图表,要实现自动更新,需要用Dash(Plotly的交互式应用框架)配合定时器来周期性刷新数据并更新图表。以下是修改后的完整代码:

import pymysql 
import pandas as pd 
import plotly.graph_objects as go
import dash
from dash import dcc, html, Input, Output

# 初始化Dash应用
app = dash.Dash(__name__)

# 封装数据库查询逻辑,每次更新时重新获取最新数据
def get_sensor_data():
    myMyConn = pymysql.connect(user='ID', password='PW', host='IP', port=#####,charset='utf8', database='###')
    sql = """
            SELECT X_Axis_CrestFactor, Y_Axis_CrestFactor, Z_Axis_CrestFactor, created_at
            FROM sensor_data
            WHERE info_devaddr = 'FF6CC451';
            """
    df = pd.read_sql(sql, myMyConn)
    myMyConn.close()  # 查询后关闭连接,避免资源占用或超时
    return df

# 应用布局:包含图表组件和定时触发器
app.layout = html.Div([
    dcc.Graph(id='live-crestfactor-graph'),
    dcc.Interval(
        id='interval-component',
        interval=30*1000,  # 30秒更新一次,单位为毫秒
        n_intervals=0
    )
])

# 回调函数:定时器触发时自动更新图表
@app.callback(
    Output('live-crestfactor-graph', 'figure'),
    Input('interval-component', 'n_intervals')
)
def update_graph(n):
    df = get_sensor_data()
    fig = go.Figure()
    fig.add_trace(go.Scatter(x=df['created_at'], y=df['X_Axis_CrestFactor'], mode='lines', name='X轴'))
    fig.add_trace(go.Scatter(x=df['created_at'], y=df['Y_Axis_CrestFactor'], mode='lines', name='Y轴'))
    fig.add_trace(go.Scatter(x=df['created_at'], y=df['Z_Axis_CrestFactor'], mode='lines', name='Z轴'))
    
    # 图表基础配置
    fig.update_layout(
        title='传感器峰值因子实时数据',
        xaxis_title='时间',
        yaxis_title='峰值因子',
        transition_duration=500  # 添加更新过渡动画
    )
    return fig

if __name__ == '__main__':
    app.run_server(debug=True)

关键改动说明

  • 引入Dash库:作为Plotly的交互式框架,支持组件动态更新
  • get_sensor_data函数:每次更新时重新连接数据库获取最新数据,避免长期连接超时
  • dcc.Interval组件:设置30秒的触发间隔,自动触发回调函数
  • 回调机制:监听定时器信号,每次触发时重新查询数据并生成新图表返回给前端

内容的提问来源于stack exchange,提问作者billha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:45:25