使用Dash中的用户表单连接到OracleDB并在回调之间共享连接

问题描述 投票:0回答:1

我想在Dash(Plotly)中创建一个用户表单,因此可以使用cx_Oracle连接到Oracle数据库。我能够毫无问题地连接到数据库并在回调中查询数据,但是我不确定如何在不同的回调之间“共享”打开的连接以进行不同的查询或使用注销按钮关闭连接。

任何建议都非常感谢!谢谢!

HTML布局

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)
python oracle callback plotly-dash
1个回答
0
投票

打开连接后,您的应用将一直保持连接状态,除非您另行通知。我将创建一个单独的回调来实例化连接,然后为每个查询向前端创建其他回调。

关闭连接非常简单:my_connection.close()。可能是页面上某处的按钮。

© www.soinside.com 2019 - 2024. All rights reserved.