How can I see the raw SQL queries Django is running?

database, django, django-database, python, sql

Solution

See the docs FAQ: "How can I see the raw SQL queries Django is running?"

`django.db.connection.queries` contains a list of the SQL queries:

from django.db import connection
print(connection.queries)

Querysets also have a `query` attribute containing the query to be executed:

print(MyModel.objects.filter(name="my name").query)

Note that the output of the query is not valid SQL, because:

"Django never actually interpolates the parameters: it sends the query and the parameters separately to the database adapter, which performs the appropriate operations."

From Django bug report #17741.

Because of that, you should not send query output directly to a database.

If you need to reset the queries to, for example, see how many queries are running in a given period, you can use `reset_queries` from `django.db`:

from django.db import reset_queries
from django.db import connection

reset_queries()
# Run your query here
print(connection.queries)
>>> []

Problem

Is there a way to show the SQL that Django is running while performing a query?

Original source

Related problems