เป็นไปได้ไหมที่จะนับจำนวนการสืบค้น 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)```