인프런 파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 보고 정리한 내용입니다.
Django django-debug-toolbar를 통한 SQL 디버깅
Third Party App
현재 request/response에 대한 다양한 디버깅 정보를 보여줌
응답 포멧이 html 포멧일 때만 사용 가능 (API 응답에 대해서는 보여줄 수 없음)
다양한 Panel 지원
- SQLPanel을 통해, 각 요청 처리 시에 발생한 SQL 내역 확인 가능
- Ajax 요청에 대한 지원은 불가능 (웹 브라우저에서 바로 보여지지 않기 때문에)
Installation
공식 Documentation 참고
Installation - Django Debug Toolbar 3.4.0 documentation
주의사항
웹페이지의 템플릿에 꼭 body태그가 있어야만, django-debug-toolbar가 동작함
이유: dbt의 html/script 디폴트 주입 타겟이 body태그 (INSERT_BEFORE 설정 디폴트: body태그)
필요한 부분을 다 채워넣으면, 브라우저 화면 우측에 다음과 같은 toolbar가 생김
SQL의 경우 소요시간도 확인 가능 (확실히 flask보다 체계적인 관리가 가능하겠다는 느낌)
코드를 통한 SQL 내역 확인
QuerySet의 query 속성 참조
ex) print(Post.objects.all().query) → 실제 문자열 참조 시에 SQ 생성
settings.DEBUG=True시에만 쿼리 실행내역을 메모리에 누적
1
2
3
4
5
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()를 통해서 수동 초기화도 가능
주의
배포시에는 Debug를 True로 하면, 메모리가 계속 누적되기 때문에 성능 저하될 수 있어서 꼭 False로 하고 배포