【问题标题】:refreshing data sources to be shown in editable DataTable in a Dash app刷新数据源以显示在 Dash 应用程序的可编辑数据表中
【发布时间】:2022-01-27 08:23:23
【问题描述】:

我有一个 plotly/dash 应用程序。

在我的应用中,我会在某个时间点加载数据

# somewhere in app body
data=get_data()

稍后,我将数据呈现在 DataTable editable=True 中。

app.layout = html.Div(
            children=[
                dash_table.DataTable(
                id='myDataTable',
                columns=[{"name": i, "id": i} for i in data.columns],
                data=data.to_dict('records'),
                editable=True,    
                     ]),
    ]), 

之后,用户可以在线编辑内容并将修改存储在数据库中

@app.callback(
    dash.dependencies.Output('a_text_area', 'value'),
    [dash.dependencies.Input('myDataTable', 'data')]
)
def loading_data(data):  
    D=pd.DataFrame(data)
    D.to_sql('test_backend',if_exists='replace')

    return 'updated'

这很好用;我可以让我的用户修改登录到数据库中。 但是,当我刷新页面时,用户修改会丢失/不会使用 get_data() 重新加载。 如何保证每次刷新页面都调用get_data()?

【问题讨论】:

    标签: python plotly plotly-dash dashboard


    【解决方案1】:

    对于页面加载的更新,您可以将app.layout 设置为一个函数。

    如果您将 app.layout 设置为函数,那么您可以在每次页面加载时提供动态布局。

    https://dash.plotly.com/live-updates

    简单示例

    def serve_layout():
        cursor.execute('SELECT CURRENT_TIME')
        current_time = cursor.fetchone()
        return html.H1(current_time)
    
    app.layout = serve_layout
    

    在上面的示例中,时间是从数据库中检索的,并在每次刷新页面时更新。

    在您的情况下,您可以将您的 get_data 函数调用放在那里,然后返回包含您的 DataTable 的布局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 2013-01-24
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多