sort select_related raw queryset example python sql django django-queryset

python - select_related - Obteniendo el SQL de un Django QuerySet



select django (5)

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

Esta pregunta ya tiene una respuesta aquí:

¿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.


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/


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.


Imprime el atributo de query del queryset.

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


La respuesta aceptada no me funcionó cuando uso Django 1.4.4. En lugar de la consulta sin <django.db.models.sql.query.Query object at 0x10a4acd90> se devolvió una referencia al objeto de consulta: <django.db.models.sql.query.Query object at 0x10a4acd90> .

Lo siguiente devolvió la consulta:

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