Existe-t-il un moyen d'imprimer la requête générée par l'ORM de Django ?
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 ?
Merci d'avance !
Existe-t-il un moyen d'imprimer la requête générée par l'ORM de Django ?
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 ?
Merci d'avance !
Chaque objet QuerySet possède un champ "query" que vous pouvez enregistrer ou imprimer sur stdout à des fins de débogage.
qs = Model.objects.filter(name='test')
print qs.query
Modifier
J'ai également utilisé des balises de modèle personnalisées (comme indiqué dans le document intitulé cet extrait ) pour injecter les requêtes dans la portée d'une seule requête sous forme de commentaires HTML.
Vous pouvez également utiliser la journalisation python pour enregistrer toutes les requêtes générées par Django. Il suffit de l'ajouter à votre fichier de configuration.
LOGGING = {
'disable_existing_loggers': False,
'version': 1,
'handlers': {
'console': {
# logging handler that outputs log messages to terminal
'class': 'logging.StreamHandler',
'level': 'DEBUG', # message level to be written to console
},
},
'loggers': {
'': {
# this sets root level logger to log debug and higher level
# logs to console. All other loggers inherit settings from
# root level logger.
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False, # this tells logger to send logging message
# to its parent (will send if set to True)
},
'django.db': {
# django also has database level logging
},
},
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.