2012-03-28 10 views

Respuesta

2

Hay 2 maneras:

  1. https://docs.djangoproject.com/en/dev/faq/models/#how-can-i-see-the-raw-sql-queries-django-is-running

  2. En Django 1.3 y arriba se puede utilizar el registro que creo que vuelca sus consultas SQL en el registro. https://docs.djangoproject.com/en/dev/topics/logging/

no parece que hay una manera fácil recta hacia adelante sin debug = true. Esto es lo más cerca que pude encontrar: Logging Django SQL queries with DEBUG set to False

+0

correcto, pero la pregunta específicamente para .save() y DEBUG = True no es una opción ya que no puedo configurar mi servidor activo en DEPURACIÓN. Tampoco puedo reproducir mi problema en mi entorno de depuración. –

+0

Parece que no hay una forma sencilla y directa sin DEBUG = True. Esto es lo más cercano que pude encontrar: http://stackoverflow.com/questions/7181511/logging-django-sql-queries-with-debug-set-to-false – Sid

+0

Tal vez puede configurar su base de datos para [consultas de registro] (http://www.postgresql.org/docs/8.3/static/runtime-config-logging.html#GUC-LOG-STATEMENT) (cuidado: lo ralentiza) – RickyA

4

Sobre la base de la respuesta de Sid y este fragmento (http://djangosnippets.org/snippets/1973/) He reemplazar el postgres db-envoltura con esto:

# base.py 
from django.db.backends.postgresql_psycopg2.base import * 

#http://djangosnippets.org/snippets/1973/ 
class DatabaseWrapper(DatabaseWrapper): 

    def __init__(self, *args, **kwargs): 
     super(DatabaseWrapper, self).__init__(*args, **kwargs) 
     self.use_debug_cursor = True 

Luego, en settings.py, utilice 'ENGINE': 'my_project.db_backend', en lugar del backend por defecto (en mi caso, 'ENGINE': 'django.db.backends.postgresql_psycopg2',)

ahora connection.queries contendrá todas sus consultas!

Cuestiones relacionadas