Có thể đếm số lượng truy vấn SQL với Flask / SQLAlchemy / Pytest / SQLite không?

Sep 03 2020

Tôi có một dự án Flask sử dụng SQLAlchemy và cơ sở dữ liệu. Để thử nghiệm, tôi thay thế cơ sở dữ liệu bằng cơ sở dữ liệu SQLite.

Bây giờ tôi muốn chạy một số chế độ xem và kiểm tra số lượng truy vấn được thực thi. Về cơ bản, tôi muốn tránh tình cờ gặp phải vấn đề chọn (n + 1). Có thể lấy số lượng Truy vấn SQL được thực thi từ SQLite hoặc plugin Pytest / Flask không?

Trả lời

AshishBhatt Sep 03 2020 at 19:50

Bạn có thể làm điều này bằng cách https://docs.sqlalchemy.org/en/13/core/events.html (ghi nhật ký sự kiện)

event.listen(engine, "before_cursor_execute")

Bây giờ bạn có thể sử dụng chức năng như đã đề cập trong tài liệu:

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