python / / 2025. 4. 15. 06:59

[sqlalchemy] SQL 로깅

sqlalchemy 실행로그를 출력하는 방법

1. logger 설정

Logging 설정으로 로그를 남길 수 있다.

logging.basicConfig()
logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO)

실행 결과

2025-04-15 06:51:43 +0900 - sqlalchemy.engine.Engine - INFO -  SELECT blog.blog_id, blog.name, ...
FROM blog
WHERE blog.user_id = %(c_user_id_1)s
 LIMIT %(param_1)s, %(param_2)s

 2025-04-15 06:51:43 +0900 - sqlalchemy.engine.Engine - INFO - [generated in 0.00037s] {'c_user_id_1': 'hong_1', 'param_1': 0, 'param_2': 100}

2. echo 활성화

create_engine할 때 echo를 True로 설정하면 로그를 남길 수 있다.

engine = create_engine(
    connection_string,
    echo=True,
    ...
)

실행 결과

2025-04-15 06:51:43 +0900 - sqlalchemy.engine.Engine - INFO -  SELECT blog.blog_id, blog.name, ...
FROM blog
WHERE blog.user_id = %(c_user_id_1)s
 LIMIT %(param_1)s, %(param_2)s

 2025-04-15 06:51:43 +0900 - sqlalchemy.engine.Engine - INFO - [generated in 0.00037s] {'c_user_id_1': 'hong_1', 'param_1': 0, 'param_2': 100}

3. SQL 쿼리 로깅

compiled_statement = statement.compile(compile_kwargs={"literal_binds": True})
self.logger.info(f"실행되는 SQL 쿼리: {compiled_statement}")

실행 결과

2025-04-15 06:51:43 +0900 - sqlalchemy.engine.Engine - INFO -  SELECT blog.blog_id, blog.name, ...
FROM blog
WHERE blog.user_id = 'hong_1'
 LIMIT 0, 100
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유