Flask pyodb c ошибка: серверу не удалось возобновить транзакцию Flask с SQL База данных сервера в Ubuntu - PullRequest
0 голосов
/ 12 февраля 2020

Я развернул приложение flask на сервере Ubuntu, но когда я пытался запустить приложение, я обнаружил ошибку

Серверу не удалось возобновить транзакцию

после нескольких SQL транзакций и приложение падает до

Внутренняя ошибка сервера

Я использую flask framework, pyodb c для подключения к SQL серверу, uwsgi и nginx для WSGI, и я очень новичок в развертывании приложения flask на сервере. Ошибка приходит, я думаю, когда я запускаю определенный маршрут из приложения. Код указанного c маршрута приведен ниже,

@app.route('/master_values/', methods=["GET","POST"])
def masterValidationValues():
    if request.method == "POST":
        MasterData = pd.read_sql("select ID,ParameterName,ParameterLowValue,ParameterHighValue from DeskMasterData", db)

        updates = []
        for key,value in MasterData["ParameterName"].iteritems():
            updates.append({
                "ParameterName": value,
                "ParameterLowValue": request.form.get(str(value + " " + "Low")),
                "ParameterHighValue": request.form.get(str(value + " " + "High")) })

        df = pd.DataFrame(updates)
        cursor.fast_executemany = True
        for i in range(0, df.__len__()):
            cursor.execute("update DeskMasterData set ParameterLowValue={low}, ParameterHighValue={high} "
                           "where ParameterName = '{parameter}'".format(
                parameter=df.iloc[i].ParameterName,
                low=float(df.iloc[i].ParameterLowValue),
                high=float(df.iloc[i].ParameterHighValue) ))
            db.commit()

        return redirect(url_for("masterValidationValues"))

    masterValues = pd.read_sql("select ID,ParameterName,ParameterLowValue,ParameterHighValue from DeskMasterData", db)

    return render_template('master-values.html', masterValues = masterValues)

Ниже приведен скриншот ошибки:

enter image description here

По Я могу понять, что код пытается запустить новую транзакцию SQL даже до того, как существующая транзакция будет зафиксирована или закрыта. Или, может быть, я неправильно использую многопоточность, из-за чего несколько SQL транзакций перекрываются. Я сбит с толку, потому что я использовал тот же подход, который использовался на этом маршруте для SQL, также и на всех других маршрутах, но только этот маршрут дает мне ошибку. Прошу вас, пожалуйста, помогите мне разобраться с этим. Также, пожалуйста, предложите альтернативный и эффективный способ обработки запросов к базе данных с помощью flask с примером.

...