【问题标题】:Correct syntax to retry SQL connection after connection failed in python?在python中连接失败后重试SQL连接的正确语法?
【发布时间】:2020-07-23 02:21:43
【问题描述】:

我有一个在 Azure 应用服务上运行的破折号(烧瓶)应用程序,我要求用户输入,然后他们单击“提交”,我的代码运行 SQL 查询。它几乎一直有效,但有时查询无法连接(通信链路故障)。当我重新启动应用服务时,它又开始工作了。

有没有办法利用 Try & except 子句尝试重新建立 SQL 连接或其他什么?如果我想尝试实现这种逻辑,我的代码会是什么样子?我正在努力找出为其编写语法的正确方法。

@dash_app.callback(
    Output('hidden-dataframe', 'children'),
    [Input('submit-button', 'n_clicks')],
    [State('company-dropdown', 'value')])
def select_company(n_clicks, value):
    if value is None:
        raise PreventUpdate
    else:
        x = value
        if n_clicks:
            from datetime import datetime, timedelta
            start_date = (datetime.today() - timedelta(29)).strftime('%Y-%m-%d')
            end_date = datetime.today().strftime('%Y-%m-%d')

            cnxn = pyodbc.connect(driver='{OBDC Driver 17 for SQL Server}',host,database,trusted_connection,user,password)
            query = f"SELECT data FROM table WHERE ..."

            df = pd.read_sql_query(query, cnxn)

   return df.to_json(date_format='iso', orient='split')

这是我在连接失败时得到的错误代码:

【问题讨论】:

    标签: python azure flask plotly-dash


    【解决方案1】:

    要重新连接时重试一次,请替换

        df = pd.read_sql_query(query, cnxn)
    

        try:
            df = pd.read_sql_query(query, cnxn)
        except pyodbc.OperationalError:
            cnxn.close()
            cnxn = pyodbc.connect(driver='{OBDC Driver 17 for SQL Server}',host,database,trusted_connection,user,password)
            df = pd.read_sql_query(query, cnxn)
    

    这在 azure app service/flask 中对我有用。但是直接使用光标,而不是 pandas,因此您要处理的具体错误可能会有所不同。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2011-04-23
      • 2012-03-27
      • 2019-03-18
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 2016-01-13
      相关资源
      最近更新 更多