我有一个使用 SQLAlchemy 和数据库的 Flask 项目。为了测试,我将数据库替换为 SQLite 数据库。
现在我想运行一些视图并测试执行的查询数量。本质上,我想避免意外遇到 (n+1) 选择问题。是否可以从 SQLite 或 Pytest / Flask 插件获取执行的 SQL 查询的数量?
我有一个使用 SQLAlchemy 和数据库的 Flask 项目。为了测试,我将数据库替换为 SQLite 数据库。
现在我想运行一些视图并测试执行的查询数量。本质上,我想避免意外遇到 (n+1) 选择问题。是否可以从 SQLite 或 Pytest / Flask 插件获取执行的 SQL 查询的数量?
您可以通过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)```