Django ORM 쿼리 세트의 해당 SQL 쿼리를 보는 방법은 무엇입니까?
Django ORM이 생성하는 쿼리를 인쇄 할 수있는 방법이 있습니까?
다음 문장을 실행한다고 가정 해보십시오. Model.objects.filter(name='test')
생성 된 SQL 쿼리를 보려면 어떻게합니까?
각 QuerySet 오브젝트에는 query
디버깅 목적으로 stdout에 로그하거나 인쇄 할 수 있는 속성이 있습니다.
qs = Model.objects.filter(name='test')
print qs.query
편집하다
또한 이 스 니펫에 설명 된대로 사용자 지정 템플릿 태그를 사용 하여 단일 요청 범위에 쿼리를 HTML 주석으로 삽입했습니다.
파이썬 로깅을 사용하여 Django에서 생성 된 모든 쿼리를 기록 할 수도 있습니다. 설정 파일에 추가하면됩니다.
LOGGING = {
'disable_existing_loggers': False,
'version': 1,
'handlers': {
'console': {
# logging handler that outputs log messages to terminal
'class': 'logging.StreamHandler',
'level': 'DEBUG', # message level to be written to console
},
},
'loggers': {
'': {
# this sets root level logger to log debug and higher level
# logs to console. All other loggers inherit settings from
# root level logger.
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False, # this tells logger to send logging message
# to its parent (will send if set to True)
},
'django.db': {
# django also has database level logging
},
},
}
응용 프로그램이 html 출력을 생성하는 경우 다른 방법 -django 디버그 도구 모음을 사용할 수 있습니다.
이 코드를 인터프리터에 붙여 넣으면 모든 SQL 쿼리가 표시됩니다.
# To get all sql queries sent by Django from py shell
import logging
l = logging.getLogger('django.db.backends')
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())
있는 DEBUG
한 :
from django.db import connection
print(connection.queries)
개별 쿼리의 경우 다음을 수행 할 수 있습니다.
print(Model.objects.filter(name='test').query)
django-debug-toolbar
응용 프로그램을 살펴보면 모든 쿼리를 기록하고 프로파일 링 정보 등을 표시합니다.
강력한 솔루션은 데이터베이스 서버가 파일에 로그 한 다음
tail -f /path/to/the/log/file.log
Django debug_toolbar를 사용하여 SQL 쿼리를 볼 수 있습니다. debug_toolbar 사용법에 대한 단계별 안내서 :
Debug_toolbar를 설치하십시오
pip install django-debug-toolbar
settings.py 파일을 편집하고 설치된 앱에 debug_toolbar를 추가하십시오. 아래에 'django.contrib.staticfiles'에 추가해야합니다. 또한 미들웨어에 debug_toolbar를 추가하십시오.
Settings.py =>
INSTALLED_APPS= [ 'debug_toolbar']
MIDDLEWARE = ['debug_toolbar.middleware.DebugToolbarMiddleware']
settings.py 파일에 INTERNAL_IPS라는 새 목록을 만듭니다.
Settings.py => settings.py 파일 끝에 새 목록을 만들고 아래 목록을 추가하십시오.
INTERNAL_IPS= [127.0.0.1']
이를 통해 디버그는 내부 개발 서버에서만 실행될 수 있습니다.
Edit urls.py file of #Project & add below code:
if settings.DEBUG:
import debug_toolbar
urlpatterns = [
url(r'^__debug__/', include(debug_toolbar.urls))
] + urlpatterns
apply migrate & run server again
You will see an add-on on your web page at 127.0.0.1 & if you click on SQL Query check box, you can actually see the run time of query as well.
'Programming' 카테고리의 다른 글
Nexus 4를 adb에 연결할 수 없음 : 승인되지 않음 (0) | 2020.06.08 |
---|---|
MySQL 테이블에서 중복을 삭제하는 방법은 무엇입니까? (0) | 2020.06.08 |
범위에서 임의의 정수 생성 (0) | 2020.06.08 |
예 / 아니요 입력과 같은 APT 명령 행 인터페이스? (0) | 2020.06.08 |
서클 C에서 com.android.tools.build:gradle:3.0.0-alpha1을 찾을 수 없습니다. (0) | 2020.06.08 |