Как выполнить функцию def с помощью кнопки основного компонента da sh html - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть простой код, подобный приведенному ниже:

import pyodbc
import pandas as pd
import os
import sqlalchemy as db
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Date, Float
import datetime as dt
import numpy as np
import dash
import dash_html_components as html
import dash_core_components as dcc

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)




def my_DB_func():

    .............

    """Connection to sql-server Part"""
    # connect db
    engine = create_engine('mssql+pyodbc://bbbbb-aaaaa\zzzzzzzxxx/toolDB?driver=SQL+Server+Native+Client+11.0')
    connection = engine.connect()

    ................

    # Close the connection
    connection.close()
app.layout = html.Div([
    html.Button('Submit', id='button'),
])

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

Так что все, что мне нужно Когда нажимаете эту кнопку, просто выполните my_DB_func()

Об этой функции просто код содержит около более 800 строк, которые создают базу данных и экспортируют некоторые файлы Excel с использованием функций to_csv и to_sql

Итак, как выполнить функцию @Callback для выполнения функции def

1 Ответ

0 голосов
/ 18 февраля 2020

Я пытался использовать этот простой @ Call-Back, и он работает:

@app.callback(
    Output(component_id='body-div', component_property='children'),
    [Input(component_id='button', component_property='n_clicks')]
)

def update_output(n_clicks):
    if n_clicks is None:
        raise PreventUpdate
    else:
        return my_DB_func()
...