Wie erhalte ich die SQL, die Django auf die Datenbank aus einem QuerySet-Objekt verwenden wird? Ich versuche, einige seltsame Verhalten zu debuggen, aber ich bin nicht sicher, welche Abfragen an die Datenbank gehen.
Antworten
Zu viele Anzeigen?Einfach:
print my_queryset.query
Zum Beispiel:
from django.contrib.auth.models import User
print User.objects.filter(last_name__icontains = 'ax').query
Es sollte auch erwähnt werden, dass bei DEBUG = True alle Ihre Abfragen protokolliert werden, und Sie können sie durch Zugriff auf connection.queries abrufen:
from django.db import connections
connections['default'].queries
Le site django debug toolbar Projekt nutzt dies, um die Abfragen auf einer Seite übersichtlich darzustellen.
Die akzeptierte Antwort funktionierte bei mir nicht, wenn ich Django 1.4.4 verwendete. Anstelle der Rohabfrage wurde ein Verweis auf das Query-Objekt zurückgegeben: <django.db.models.sql.query.Query object at 0x10a4acd90>
.
Die Abfrage ergab Folgendes:
>>> queryset = MyModel.objects.all()
>>> queryset.query.__str__()
Als Alternative zu den anderen Antworten, django-devserver gibt SQL auf der Konsole aus.