Gibt es eine Möglichkeit, wie ich die Abfrage der Django ORM generiert drucken kann?
Angenommen, ich führe die folgende Anweisung aus: Model.objects.filter(name='test')
Wie kann ich die generierte SQL-Abfrage sehen?
Gibt es eine Möglichkeit, wie ich die Abfrage der Django ORM generiert drucken kann?
Angenommen, ich führe die folgende Anweisung aus: Model.objects.filter(name='test')
Wie kann ich die generierte SQL-Abfrage sehen?
Jedes QuerySet-Objekt hat eine query
Attribut, das Sie zu Debugging-Zwecken protokollieren oder nach stdout ausgeben können.
qs = Model.objects.filter(name='test')
print(qs.query)
Beachten Sie, dass in pdb die Verwendung von p qs.query
wird nicht wie gewünscht funktionieren, aber print(qs.query)
lo hará.
Wenn das nicht funktioniert, versuchen Sie es bei alten Django-Versionen:
print str(qs.query)
Editar
Ich habe auch benutzerdefinierte Vorlagen-Tags verwendet (wie in dieser Ausschnitt ), um die Abfragen im Rahmen einer einzelnen Anfrage als HTML-Kommentare einzubringen.
@DataGreed Gute Frage, es könnte sich lohnen, sie in einem neuen Thread zu stellen, damit Sie mehr Antworten erhalten.
Sie können auch Python Logging verwenden, um alle von Django generierten Abfragen zu protokollieren. Fügen Sie dies einfach zu Ihrer Einstellungsdatei hinzu.
LOGGING = {
'disable_existing_loggers': False,
'version': 1,
'handlers': {
'console': {
# logging handler that outputs log messages to terminal
'class': 'logging.StreamHandler',
'level': 'DEBUG', # message level to be written to console
},
},
'loggers': {
'': {
# this sets root level logger to log debug and higher level
# logs to console. All other loggers inherit settings from
# root level logger.
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False, # this tells logger to send logging message
# to its parent (will send if set to True)
},
'django.db': {
# django also has database level logging
'level': 'DEBUG'
},
},
}
Eine andere Methode für den Fall, dass die Anwendung eine HTML-Ausgabe erzeugt - django debug toolbar verwendet werden können.
Wenn jemand etwas haben möchte Zusammenfassung mit Summenbildung de Anzahl der ausgeführten Abfragen außerdem Gesamtzeit Es hat gedauert: dabapps.com/blog/logging-sql-abfragen-django-13
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.