12
votes

En utilisant django.db.connection.Quiseries

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


0 commentaires

5 Réponses :


3
votes

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.

Si j'essaie le code que vous avez collé dans un ./ manage.py shell session, je ne vois que des requêtes que j'ai déjà effectuées dans cette session shell.

Si je passe des requêtes à 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.

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.


1 commentaires

Ok, donc je ne travaillera que dans chaque demande. Ça a du sens. Merci d'avoir fait remarquer cela :-)



20
votes

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.

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


2 commentaires

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.



9
votes

@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:

  • débogsqlshell: sortira la SQL qui est exécutée lorsque vous travaillez dans la coque interactive Python.

    exemple: python manage.py débogsqlshell xxx


0 commentaires

2
votes
from django.db import connections
x = connections['rating']
x.queries

So check another connections!

1 commentaires

La question concerne l'importation connexion pas connexions .



0
votes

C'est ce qui le corrigé pour moi; J'ai utilisé: xxx

pour obtenir le nombre de requêtes.


0 commentaires