Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

SQL Debug en Django

¿Cómo saber en Django qué sentencias SQL se están ejecutando detrás de su ORM? Según la FAQ, podemos hacerlo de esta forma:

Make sure your Django DEBUG setting is set to True. Then, just do this:

>>> from django.db import connection

>>> connection.queries

[{'sql': 'SELECT polls_polls.id,polls_polls.question,polls_polls.pub_date FROM polls_polls',

'time': '0.002'}]

connection.queries is only available if DEBUG is True. It's a list of dictionaries in order of query execution. Each dictionary has the following:

sql -- The raw SQL statement

time -- How long the statement took to execute, in seconds.

connection.queries includes all SQL statements -- INSERTs, UPDATES, SELECTs, etc. Each time your app hits the database, the query will be recorded.

Cada vez que se realiza una nueva petición, esa variable es sobre escrita con las consultas que se ejecutaron en la vista asociada. La forma de verlas es accediendo a connection.queries en cada vista de nuestro interés. Para facilitar esta tarea y no tener código intrusivo, escribí un decorador:


from django.db import connection

def sql_debug(f):

    '''

    Decorador útil para inspeccionar las sentencias SQL que se ejecutan en

    cada request.

    '''

    def inner(*args, **kwargs):

        r = f(*args, **kwargs)

        for d in connection.queries:

            print "time: %s\n sql:%s\n\n" % (d['time'], d['sql'])

        return r

    return inner


If you don't... you SHOULD: 3 Lecturas Recomendadas

1) Nanni Search: aprenda prolog programando un juego: http://www.amzi.com/AdventureInProlog/a1start.htm.

2) Beating de Avegarages: la historia de dos nerds que triunfan en los negocios en internet programando en Lisp, un lenguaje de programación desconocido en la industria pero estrella los laboratorios de IA: http://www.paulgraham.com/avg.html.

3) SQL for web nerds: aprenda SQL de la mano del delirante Philip Greenspun del MIT: http://philip.greenspun.com/sql/.