Files
romm/backend/handler/database/base_handler.py
Georges-Antoine Assi 8ed107336f only print queries once
2025-08-21 22:34:07 -04:00

37 lines
1.2 KiB
Python

import logging
import time
from config import DEV_SQL_ECHO
from config.config_manager import ConfigManager
from sqlalchemy import create_engine, event
from sqlalchemy.orm import sessionmaker
sync_engine = create_engine(
ConfigManager.get_db_engine(), pool_pre_ping=True, echo=False
)
sync_session = sessionmaker(bind=sync_engine, expire_on_commit=False)
# Disable SQLAlchemy logging as echo will print the queries
logging.getLogger("sqlalchemy.engine.Engine").handlers = [logging.NullHandler()]
if DEV_SQL_ECHO:
@event.listens_for(sync_engine, "before_cursor_execute")
def before_cursor_execute(
conn, cursor, statement, parameters, context, executemany
):
context._query_start_time = time.time()
print("--------START--------")
print(f"SQL: {statement}")
print(f"Parameters: {parameters}")
@event.listens_for(sync_engine, "after_cursor_execute")
def after_cursor_execute(conn, cursor, statement, parameters, context, executemany):
total_time = time.time() - context._query_start_time
print(f"Execution time: {total_time:.4f} seconds")
print("--------END--------")
class DBBaseHandler: ...