"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je inspecter les requêtes SQL exécutées par Django ?

Comment puis-je inspecter les requêtes SQL exécutées par Django ?

Publié le 2024-11-11
Parcourir:963

How Can I Inspect the SQL Queries Executed by Django?

Comment inspecter les requêtes SQL dans Django

Vous voulez connaître les instructions SQL que Django exécute lors de l'exécution d'une requête ? La réponse est simple :

1. Trouvez la réponse dans la documentation
La section FAQ de la documentation de Django fournit une réponse simple :

2 . Accéder à la base de données Connections
peut accéder à SQL via django.db.connection.queries. Liste de requêtes :

from django.db import connection
print(connection.queries)

3. Afficher l'objet Queryset
L'objet Queryset possède un attribut de requête qui contient la requête à exécuter :

print(MyModel.objects.filter(name="my name").query)

Remarque : La requête générée par n'est pas un SQL valide. La raison est :

"Django n'interpole jamais les paramètres : il envoie la requête et les paramètres séparément à l'adaptateur de base de données, qui effectue les opérations appropriées."

(extrait du rapport de bug de Django n° 17741)

Par conséquent, n’envoyez pas le résultat de la requête directement à la base de données.

Réinitialiser les requêtes
Si vous devez réinitialiser une requête, par exemple pour voir le nombre de requêtes exécutées au cours d'une période donnée, vous pouvez utiliser django.db.reset_queries :

from django.db import reset_queries
from django.db import connection

reset_queries()
# 运行你的查询
print(connection.queries)
>>> []
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3