刷新数据源以显示在 Dash 应用程序的可编辑 DataTable 中
refreshing data sources to be shown in editable DataTable in a Dash app
我有一个 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'
这很好用;我可以让我的用户修改记录在数据库中。
但是,当我刷新页面时,用户修改 lost/not 使用 get_data() 重新加载。
如何确保每次刷新页面时都调用get_data()?
对于页面加载更新,您可以将 app.layout
设置为一个函数。
If you set app.layout to a function, then you can serve a dynamic layout on every page load.
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
函数调用放在那里,然后 return 你的布局包含你的 DataTable
.
我有一个 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'
这很好用;我可以让我的用户修改记录在数据库中。 但是,当我刷新页面时,用户修改 lost/not 使用 get_data() 重新加载。 如何确保每次刷新页面时都调用get_data()?
对于页面加载更新,您可以将 app.layout
设置为一个函数。
If you set app.layout to a function, then you can serve a dynamic layout on every page load.
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
函数调用放在那里,然后 return 你的布局包含你的 DataTable
.