J'ai une application Python / Django qui exécute beaucoup de déclarations SQL. Pour déboguer, je pensais que je devrais créer une vision simple pour moi, qui répertorie simplement toutes les déclarations SQL qui ont été exécutées.
Selon la documentation, ce code devrait suffire à le faire: P>
from django.db import connection connection.queries
5 Réponses :
Je pense que ces requêtes sont stockées en mémoire et non partagées entre les processus, vous aurez donc accès aux requêtes effectuées par le processus en cours. P>
Si j'essaie le code que vous avez collé dans un Si je passe Je suppose-mais je n'ai pas testé - que si vous utilisez ceci dans un environnement où vous avez un processus servant plusieurs demandes, vous verriez plus de requêtes étant enregistrées chaque demande. P> ./ manage.py shell code> session, je ne vois que des requêtes que j'ai déjà effectuées dans cette session shell. p>
des requêtes code> à partir d'une vue dans un contexte de modèle et montrez-le dans le modèle, je vois que les requêtes effectuées à cette vue. Ceci utilise cependant le serveur DEV. P>
Ok, donc je ne travaillera que dans chaque demande. Ça a du sens. Merci d'avoir fait remarquer cela :-)
Ben a raison que vous ne voyez que des requêtes du processus en cours. Vous pouvez l'utiliser dans la même vue ou dans la console, mais pas entre des vues. P>
La meilleure façon de voir quelles requêtes exécutions sur votre point de vue consiste à utiliser le Barre d'outils Django Debug < / a>. p>
Je vais vérifier la barre d'outils Django Debug. Merci.
Je n'ai jamais eu de succès à exécuter DDT sur un serveur de production. Il semble que de travailler avec le serveur de développement de Django fonctionnant localement.
@Daniel Roseman c'est une bonne idée, mais si vous voulez connaître des requêtes SQL hors de la boîte:
Installez django-commande-extensions et ajoutez-le aux applications installées. Il ajoutera de nombreuses commandes utiles dans votre projet, l'un d'entre eux: p>
exemple:
python manage.py débogsqlshell code> p>
from django.db import connections x = connections['rating'] x.queries So check another connections!
La question concerne l'importation connexion code> pas
connexions code>.
C'est ce qui le corrigé pour moi; J'ai utilisé: pour obtenir le nombre de requêtes. P> p>