Existe-t-il un moyen d'imprimer la requête générée par Django ORM?
Disons que j'exécute l'instruction suivante: Model.objects.filter(name='test')
Comment puis-je voir la requête SQL générée?
django
django-models
django-orm
Jarvis
la source
la source
prefetch_related
ie show 2 requêtes? Je ne vois que 1.<django.db.models.sql.query.Query object
Vous pouvez également utiliser la journalisation python pour journaliser toutes les requêtes générées par Django. Ajoutez simplement ceci à votre fichier de paramètres.
Une autre méthode au cas où l'application génère une sortie html - la barre d'outils de débogage django peut être utilisée.
la source
'level': 'DEBUG'
sous'django.db'
.Vous pouvez coller ce code sur votre shell qui affichera toutes les requêtes SQL:
la source
Tant qu'il
DEBUG
est allumé:Pour une requête individuelle, vous pouvez faire:
la source
query
renvoie unQuery
objet depuis Djagno 1.2 qui n'a pas d'as_sql
attribut.Vous devriez peut-être jeter un œil à l'
django-debug-toolbar
application, elle enregistrera toutes les requêtes pour vous, affichera les informations de profilage pour elles et bien plus encore.la source
Une solution robuste consisterait à enregistrer votre serveur de base de données dans un fichier, puis
la source
Si vous utilisez le routage de base de données, vous disposez probablement de plusieurs connexions à la base de données. Un code comme celui-ci vous permet de voir les connexions dans une session. Vous pouvez réinitialiser les statistiques de la même manière qu'avec une seule connexion:
reset_queries()
...
la source
Vous pouvez utiliser une debug_toolbar Django pour afficher la requête SQL. Guide étape par étape pour l'utilisation de debug_toolbar:
Installez la Debug_toolbar
Modifiez le fichier settings.py et ajoutez debug_toolbar aux applications installées, cela devrait être ajouté ci-dessous à «django.contrib.staticfiles». Ajoutez également debug_toolbar au middleware.
Settings.py =>
créer une nouvelle liste nommée INTERNAL_IPS dans le fichier settings.py
Settings.py => créer une nouvelle liste à la fin du fichier settings.py et ajouter la liste ci-dessous:
Cela permettra au débogage de s'exécuter uniquement sur le serveur de développement interne
Modifiez le fichier urls.py de #Project et ajoutez le code ci-dessous:
appliquer à nouveau migrer et exécuter le serveur
Vous verrez un module complémentaire sur votre page Web à 127.0.0.1 et si vous cliquez sur la case à cocher Requête SQL, vous pouvez également voir le temps d'exécution de la requête.
la source