"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo inspeccionar las consultas SQL ejecutadas por Django?

¿Cómo puedo inspeccionar las consultas SQL ejecutadas por Django?

Publicado el 2024-11-11
Navegar:418

How Can I Inspect the SQL Queries Executed by Django?

Cómo inspeccionar consultas SQL en Django

¿Quiere saber las declaraciones SQL que ejecuta Django al ejecutar una consulta? La respuesta es simple:

1 Encuentre la respuesta en la documentación
La sección de preguntas frecuentes de la documentación de Django proporciona una respuesta sencilla:

2. Acceder a la base de datos Connections
puede acceder a SQL a través de django.db.connection.queries. Lista de consultas:

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

3. Ver el objeto Queryset
El objeto Queryset tiene un atributo de consulta que contiene la consulta que se ejecutará:

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

Nota: La consulta generada por no es SQL válido. El motivo es:

"Django nunca interpola parámetros: envía la consulta y los parámetros por separado al adaptador de base de datos, que realiza las operaciones apropiadas

(del informe de error de Django n.º 17741).

Por lo tanto, no envíe el resultado de la consulta directamente a la base de datos.

Restablecer consultas
Si necesita restablecer una consulta, como ver la cantidad de consultas ejecutadas en un período de tiempo determinado, puede usar django.db.reset_queries:

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

reset_queries()
# 运行你的查询
print(connection.queries)
>>> []
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3