Как отлаживать peewee callproc - PullRequest
0 голосов
/ 28 марта 2020

У меня возникают проблемы при попытке увидеть, где происходит сбой при выполнении хранимой процедуры с использованием peewee в python.

Код:

def call_procedure(body):
    """
    Function that makes the call to the stored procedure
    :return: tuple int, string
    """
    try:
        DATABASE = "SOME_DB"
        HOST = "HOST"
        PORT = 3306
        USER = "USER"
        PASS = "PASS"

        db = peewee.MySQLDatabase(
            DATABASE, host=HOST, port=PORT, user=USER, password=PASS
        )
        # call procedure
        success = 0
        message = ""

        procedure_params = [
            body["Id"],
            body["paymentNumber"],
            body["status"],
            success,
            message,
        ]

        cursor = db.cursor()

        cursor.callproc(FAILED_PAYMENT_PROCESS, procedure_params)
        cursor.execute(
            "SELECT @_{}_4, @_{}_3".format(
                STORED_PROCESS, STORED_PROCESS
            )
        )
        cursor_call = cursor.fetchall()
        message = cursor_call[0][0]
        success = cursor_call[0][1]
        db.close()

        print(
            f"call procedure returned :: success:{success}, message:{message}
        )

        return success, message

    except (Exception, peewee.OperationalError) as ex:
        logger.error(
            "DB OperationalError Exception reason: {}".format(
                str(ex)
            )
        )
        print("DB OperationalError Exception {}".format(str(ex)))

Но печатается это сообщение :

call procedure returned :: success:0, message:None

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

Как я могу отладить вызов хранимой процедуры?

Является ли peewee.OperationalError правильным способом отловить ошибку?

...