Gibt es eine Möglichkeit, die vom Django ORM generierte Abfrage zu drucken?
Angenommen, ich führe die folgende Anweisung aus: Model.objects.filter(name='test')
Wie kann ich die generierte SQL-Abfrage anzeigen?
django
django-models
django-orm
Jarvis
quelle
quelle
prefetch_related
dh 2 Abfragen anzeigen? Ich sehe nur 1.<django.db.models.sql.query.Query object
Sie können auch die Python-Protokollierung verwenden, um alle von Django generierten Abfragen zu protokollieren. Fügen Sie dies einfach Ihrer Einstellungsdatei hinzu.
Eine andere Methode für den Fall, dass die Anwendung eine HTML-Ausgabe generiert - die Django-Debug-Symbolleiste kann verwendet werden.
quelle
'level': 'DEBUG'
unter'django.db'
.Sie können diesen Code in Ihre Shell einfügen, um alle SQL-Abfragen anzuzeigen:
quelle
Solange eingeschaltet
DEBUG
ist:Für eine einzelne Abfrage haben Sie folgende Möglichkeiten:
quelle
query
RenditeQuery
Objekt seit Djagno 1.2 , die es nicht habenas_sql
Attribut.Vielleicht sollten Sie sich die
django-debug-toolbar
Anwendung ansehen , sie protokolliert alle Abfragen für Sie, zeigt Profilinformationen für sie an und vieles mehr.quelle
Eine robuste Lösung wäre, Ihren Datenbankserver in einer Datei protokollieren zu lassen und dann
quelle
Wenn Sie Datenbankrouting verwenden, haben Sie wahrscheinlich mehr als eine Datenbankverbindung. Mit diesem Code können Sie Verbindungen in einer Sitzung anzeigen. Sie können die Statistiken wie bei einer einzelnen Verbindung zurücksetzen:
reset_queries()
...
quelle
Sie können eine Django debug_toolbar verwenden, um die SQL-Abfrage anzuzeigen. Schritt-für-Schritt-Anleitung zur Verwendung von debug_toolbar:
Installieren Sie die Debug_toolbar
Bearbeiten Sie die Datei settings.py und fügen Sie debug_toolbar zu installierten Apps hinzu. Dies sollte unten zu 'django.contrib.staticfiles' hinzugefügt werden. Fügen Sie auch debug_toolbar zur Middleware hinzu.
Settings.py =>
Erstellen Sie eine neue Liste mit dem Namen INTERNAL_IPS in der Datei settings.py
Settings.py => Neue Liste am Ende der Datei settings.py erstellen und folgende Liste hinzufügen:
Dadurch kann das Debug nur auf dem internen Entwicklungsserver ausgeführt werden
Bearbeiten Sie die Datei urls.py von #Project und fügen Sie den folgenden Code hinzu:
Wenden Sie den Migrate & Run-Server erneut an
Auf Ihrer Webseite wird unter 127.0.0.1 ein Add-On angezeigt. Wenn Sie auf das Kontrollkästchen SQL-Abfrage klicken, wird auch die Laufzeit der Abfrage angezeigt.
quelle