Rad Blog

Archive

Django debug-toolbar를 통한 SQL 디버깅

2020-05-02 Django xfrnk2

이진석 선생님의 리액트와 함께 장고 시작하기 수강중 정리한 글입니다.


django-debug-toolbar

  • 현재 request/response에 대한 다양한 디버깅 정보를 보여주고 다양한 패널을 지원
  • 응답 포맷이 HTML일 때만 가능
  • SQLPanel을 통해 각 요청 처리시에 발생한 SQL 내역을 확인 가능
  • Ajax 요청에 대한 지원은 불가능

django-debug-toolbar 설치

설치 공식문서
주의사항
  • 웹페이지의 템플릿에 필히 body 태그가 있어야만, django-debug-toolbar가 동작

이유 : dbt의 html/script 디폴트 주입 타겟이 /body 태그 (INSERT_BEFORE 설정 디폴트: “/body”)


코드를 통한 SQL 내역 확인

QuerySet의 query 속성 참조
  • ex) print(Post.objects.all().query) → 실제 문자열 참조 시에 SQL 생성
settings.DEBUG = True 시에만 쿼리 실행내역을 메모리에 누적
from django.db import connection, connections

for row_dict in connection.queries:
    print('{time} {sql}'.format(**row_dict))
connections['default'].queries
쿼리 초기화
  • 메모리에 누적되기에, 프로세스가 재시작되면 초기화
  • django.db.reset_queries() 통해서 수동 초기화도 가능

그 외 - django-querycount 라이브러리

comments powered by Disqus