반응형
질문
장고가 쿼리를 실행하는 동안 실행되는 SQL을 표시하는 방법이 있을까요?
답변
문서 FAQ를 참조하세요: "Django가 실행하는 원시 SQL 쿼리를 어떻게 볼 수 있나요?"
django.db.connection.queries
에는 SQL 쿼리의 목록이 포함되어 있습니다:
from django.db import connection
print(connection.queries)
쿼리셋에는 실행될 쿼리를 포함하는 query
속성도 있습니다:
print(MyModel.objects.filter(name="my name").query)
쿼리의 출력이 유효한 SQL이 아님에 유의하세요:
"Django는 실제로 매개변수를 보간(interpolate)하지 않습니다. 대신 쿼리와 매개변수를 별도로 데이터베이스 어댑터에 전송하여 적절한 작업을 수행합니다."
Django 버그 보고서 #17741에서 확인할 수 있습니다.
이로 인해 쿼리 출력을 직접 데이터베이스에 보내서는 안 됩니다.
예를 들어, 주어진 기간 동안 실행되는 쿼리의 수를 확인하기 위해 쿼리를 재설정해야 하는 경우, django.db
의 reset_queries
를 사용할 수 있습니다:
from django.db import reset_queries
from django.db import connection
reset_queries()
# 여기에서 쿼리를 실행하세요
print(connection.queries)
>>> []
반응형
댓글