Можно ли подсчитать количество SQL-запросов с помощью Flask / SQLAlchemy / Pytest / SQLite?

Sep 03 2020

У меня есть проект Flask, который использует SQLAlchemy и базу данных. Для тестирования заменяю базу данных на базу данных SQLite.

Теперь я хотел бы запустить некоторые из представлений и проверить количество выполненных запросов. По сути, я хочу избежать случайного столкновения с проблемой выбора (n + 1). Можно ли получить количество выполненных SQL-запросов из SQLite или плагина Pytest / Flask?

Ответы

AshishBhatt Sep 03 2020 at 19:50

Вы можете сделать это https://docs.sqlalchemy.org/en/13/core/events.html (регистрация событий)

event.listen(engine, "before_cursor_execute")

Теперь вы можете использовать функцию, как указано в документации:

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