Подключитесь к OracleDB с помощью пользовательской формы в Da sh и поделитесь связью между обратными вызовами - PullRequest
0 голосов
/ 21 марта 2020

Я хотел создать форму пользователя в Da sh (Plotly), чтобы можно было подключиться к базе данных Oracle, используя cx_ Oracle. Я могу без проблем подключиться к базе данных и запросить данные в обратном вызове, но я не совсем уверен, как «разделить» открытое соединение между различными обратными вызовами, чтобы выполнить разные запросы или закрыть соединение с помощью кнопки выхода из системы.

Любой совет очень ценится! Спасибо!

HTML -Layout

app.layout = html.Div([
    html.Header([
        html.Img(src=comp_img, className='header-img'),
        html.H1('My Project')
    ]),
    html.Div([
        html.Form([
            dcc.Input(id='user-name', placeholder='Username', type='text'),
            dcc.Input(id='user-pw', placeholder='Passwort', type='password'),
            html.Button('Login', id='submit-button', type='submit', className='myButton'),
            html.Div(id='intermediate-value')
        ], className='LoginForm')
    ], className='container'),
])

Обратный звонок:

@app.callback (
    Output('intermediate-value', 'children'),
    [Input('submit-button', 'n_clicks')],
    [State('user-name', 'value'),
     State('user-pw', 'value')]
)



def connect_db(n_clicks, username, password):
    if n_clicks is None:
        return
    else:
        print(n_clicks)

    try:
        my_connection = cDB.user_input(username, password)
        qry = """SELECT * FROM my_table"""
        df = cDB.query_tbl(qry, my_connection)

        print(df)

    except Exception as e:
        print(e)

1 Ответ

0 голосов
/ 22 марта 2020

Как только вы откроете соединение, ваше приложение будет подключено, пока вы не укажете обратное. Я бы создал отдельный обратный вызов для создания экземпляра соединения, а затем дополнительные обратные вызовы для каждого запроса к внешнему интерфейсу.

Закрытие соединения так же просто, как: my_connection.close(). Может быть кнопка где-то на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...