É possível contar o número de consultas SQL com Flask / SQLAlchemy / Pytest / SQLite?

Sep 03 2020

Eu tenho um projeto Flask que usa SQLAlchemy e um banco de dados. Para testar, substituo o banco de dados por um banco de dados SQLite.

Agora, gostaria de executar algumas das visualizações e testar o número de consultas executadas. Essencialmente, eu quero evitar o encontro acidental com o problema de seleção (n + 1). É possível obter o número de consultas SQL executadas do SQLite ou de um plugin Pytest / Flask?

Respostas

AshishBhatt Sep 03 2020 at 19:50

Você pode fazer isso por https://docs.sqlalchemy.org/en/13/core/events.html (eventos de registro)

event.listen(engine, "before_cursor_execute")

Agora você pode usar a função conforme mencionado na documentação:

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