【问题标题】:Connect to OracleDB with an User Form in Dash and share connection between callbacks使用 Dash 中的用户表单连接到 OracleDB 并在回调之间共享连接
【发布时间】:2020-03-21 12:35:24
【问题描述】:

我想在 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】:

    一旦您打开连接,您的应用就会连接,直到您另行通知为止。我会创建一个单独的回调来实例化连接,然后为前端的每个查询创建额外的回调。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 2019-03-27
      • 2019-05-10
      相关资源
      最近更新 更多