source

Django QuerySet에서 SQL 가져오기

manysource 2022. 11. 14. 21:46

Django QuerySet에서 SQL 가져오기

데이터베이스에서 Django가 사용하는 SQL을 QuerySet 개체에서 가져오려면 어떻게 해야 합니까?이상한 동작을 디버깅하려고 하는데 어떤 쿼리가 데이터베이스로 전송되는지 알 수 없습니다.

쿼리셋을 인쇄합니다.query기여하다.

>>> queryset = MyModel.objects.all()
>>> print(queryset.query)
SELECT "myapp_mymodel"."id", ... FROM "myapp_mymodel"

Django 1.4.4를 사용했을 때 승인된 답변은 에게 효과가 없었습니다.원시 쿼리 대신 Query 개체에 대한 참조가 반환되었습니다.<django.db.models.sql.query.Query object at 0x10a4acd90>.

다음은 쿼리를 반환했습니다.

>>> queryset = MyModel.objects.all()
>>> queryset.query.__str__()

간단:

print my_queryset.query

예를 들어 다음과 같습니다.

from django.contrib.auth.models import User
print User.objects.filter(last_name__icontains = 'ax').query

또한 DEBUG = True인 경우 모든 쿼리가 기록되고 연결에 액세스하여 쿼리를 가져올 수 있습니다.쿼리:

from django.db import connections
connections['default'].queries

django 디버깅툴바 프로젝트는 이를 사용하여 쿼리를 페이지에 깔끔하게 표시합니다.

이 미들웨어는 모든 SQL 쿼리를 콘솔에 출력하고 색상 강조 표시와 실행 시간을 제공합니다.이 기능은 까다로운 요청을 최적화하는 데 매우 유용했습니다.

http://djangosnippets.org/snippets/290/

다른 응답 대신 django-devserver는 콘솔에 SQL을 출력합니다.

언급URL : https://stackoverflow.com/questions/3748295/getting-the-sql-from-a-django-queryset