¿Es posible contar el número de consultas SQL con Flask / SQLAlchemy / Pytest / SQLite?

Sep 03 2020

Tengo un proyecto Flask que usa SQLAlchemy y una base de datos. Para las pruebas, reemplazo la base de datos por una base de datos SQLite.

Ahora me gustaría ejecutar algunas de las vistas y probar la cantidad de consultas ejecutadas. Esencialmente, quiero evitar encontrarme accidentalmente con el problema de selección (n + 1). ¿Es posible obtener la cantidad de consultas SQL ejecutadas desde SQLite o un complemento Pytest / Flask?

Respuestas

AshishBhatt Sep 03 2020 at 19:50

Puedes hacer esto por https://docs.sqlalchemy.org/en/13/core/events.html (registro de eventos)

event.listen(engine, "before_cursor_execute")

Ahora puede usar la función como se menciona en la documentación:

    @event.listens_for(conn, 'before_cursor_execute')
    def before_cursor_execute(conn, cursor, statement, parameters,
                                    context, executemany):
        log.info("Received statement: %s", statement)```