Czy można policzyć liczbę zapytań SQL za pomocą Flask / SQLAlchemy / Pytest / SQLite?

Sep 03 2020

Mam projekt Flask, który używa SQLAlchemy i bazy danych. Na potrzeby testów zastępuję bazę danych bazą danych SQLite.

Teraz chciałbym uruchomić niektóre widoki i sprawdzić liczbę wykonanych zapytań. Zasadniczo chcę uniknąć przypadkowego napotkania problemu (n + 1) wyboru. Czy można uzyskać liczbę wykonanych zapytań SQL z SQLite lub wtyczki Pytest / Flask?

Odpowiedzi

AshishBhatt Sep 03 2020 at 19:50

Możesz to zrobić przez https://docs.sqlalchemy.org/en/13/core/events.html (rejestrowanie zdarzeń)

event.listen(engine, "before_cursor_execute")

Teraz możesz użyć funkcji, o której mowa w dokumentacji:

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