Maison >développement back-end >Tutoriel Python >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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 16:59:03821parcourir

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 Django fournit une réponse simple :

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

<code class="python">from django.db import connection
print(connection.queries)</code>

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

<code class="python">print(MyModel.objects.filter(name="my name").query)</code>

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

"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."

(Tiré 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 :

<code class="python">from django.db import reset_queries
from django.db import connection

reset_queries()
# 运行你的查询
print(connection.queries)
>>> []</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn