Obteniendo el SQL de un Django QuerySet

¿Cómo obtengo el SQL que Django usará en la base de datos de un objeto QuerySet? Estoy intentando depurar algún comportamiento extraño, pero no estoy seguro de qué consultas van a la base de datos. Gracias por tu ayuda.

Imprime el atributo de query del queryset.

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

Fácil:

 print my_queryset.query 

Por ejemplo:

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

También debe mencionarse que si tiene DEBUG = True, entonces todas sus consultas se registrarán y podrá obtenerlas accediendo a connection.queries:

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

El proyecto de la barra de herramientas de depuración de Django usa esto para presentar las consultas en una página de una manera ordenada.

La respuesta aceptada no me funcionó cuando uso Django 1.4.4. En lugar de la consulta sin se devolvió una referencia al objeto de consulta: .

Lo siguiente devolvió la consulta:

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

Este middleware emitirá todas las consultas SQL a su consola, con resaltado de color y tiempo de ejecución, ha sido de gran valor para mí en la optimización de algunas solicitudes difíciles.

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

Como alternativa a las otras respuestas, django-devserver envía SQL a la consola.