Apakah mungkin menghitung jumlah query SQL dengan Flask / SQLAlchemy / Pytest / SQLite?

Sep 03 2020

Saya memiliki proyek Flask yang menggunakan SQLAlchemy dan database. Untuk pengujian, saya mengganti database dengan database SQLite.

Sekarang saya ingin menjalankan beberapa view dan menguji jumlah query yang dieksekusi. Pada dasarnya, saya ingin menghindari secara tidak sengaja mengalami masalah pilih (n + 1). Apakah mungkin mendapatkan jumlah Kueri SQL yang dieksekusi dari SQLite atau plugin Pytest / Flask?

Jawaban

AshishBhatt Sep 03 2020 at 19:50

Anda dapat melakukannya dengan https://docs.sqlalchemy.org/en/13/core/events.html (acara logging)

event.listen(engine, "before_cursor_execute")

Sekarang Anda dapat menggunakan fungsi seperti yang disebutkan dalam dokumentasi:

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