2011-08-24 3 views
8

DEBUG가 켜져있을 때 connection.queries을 보면 현재 요청/응답에 대해 실행 된 모든 SQL 쿼리를 가져올 수 있다는 것을 알고 있습니다. django-debug-toolbar도 개발에 많은 도움이됩니다.DEBUG가 False로 설정된 Django SQL 쿼리 로깅

문제점은 프로덕션 서버의 부하가 높고 각 뷰에 대해 실행중인 쿼리를 기록하여 더 많은 쿼리를 먼저 생성하는 페이지를 최적화 할 수 있다는 점입니다.

데이터베이스 드라이버를 수정하지 않고도 가능합니까?

답변

4

장고 1.3에서는 django/db/backends/__init__.py에있는 BaseDatabaseWrapper 클래스의 속성이 use_debug_cursor입니다. 이 클래스는 기본 데이터베이스 연결 (docs)을 나타내는 django.db.connection 개체의 래퍼입니다. 이 속성을 true로 설정하면 Django는 (django/db/backends/util.py)을 사용하게됩니다. CursorWrapper 대신 실행되는 모든 쿼리가 기록됩니다.

use_debug_cursor이 현재이 머신에 설치되어있는 Django 1.2에는 없으므로 지금 테스트 할 수 없습니다. 몇 분 정도면, 이것을 시험해보기 위해 거짓 1.3 프로젝트를 만들려고 노력할 것입니다 ... 나는 내 머리 위로 여기에있을 것입니다!

use_debug_cursor은 Django에서 force_debug_cursor으로 이름이 바뀜 1.8

관련 문제