본문 바로가기
Python/Python FAQ

Python 장고(Django)가 실행하는 원시 SQL 쿼리를 어떻게 볼 수 있나요?, How can I see the raw SQL queries Django is running?

by 베타코드 2023. 11. 24.
반응형

질문


장고가 쿼리를 실행하는 동안 실행되는 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.dbreset_queries를 사용할 수 있습니다:

from django.db import reset_queries
from django.db import connection

reset_queries()
# 여기에서 쿼리를 실행하세요
print(connection.queries)
>>> []
반응형

댓글