FAQ: Bases de Datos y modelos

¿Cómo puedo ver las consultas SQL que Django está ejecutando?

Asegúrese de que su configuración de Django DEBUG esté establecida en True. Luego haga esto:

>>> 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 solo está disponible si :setting:DEBUG es True. Es una lista de diccionarios en orden de ejecución de consulta. Cada diccionario tiene lo siguiente:

  • sql - La instrucción SQL sin procesar
  • time - Cuánto tiempo tardó la instrucción en ejecutarse, en segundos.

connection.queries incluye todas las sentencias SQL: INSERTs, UPDATES, SELECTs, etc. Cada vez que su aplicación accede a la base de datos, la consulta será registrada.

Si está utilizando multiple databases, puede utilizar la misma interfaz en cada miembro del diccionario connections:

>>> from django.db import connections
>>> connections["my_db_alias"].queries

Si necesita borrar la lista de consultas manualmente en cualquier punto de sus funciones, llame a reset_queries(), así:

from django.db import reset_queries

reset_queries()

¿Puedo usar Django con una base de datos preexistente?

Sí. Consulte Integración con una base de datos heredada.

Si realizo cambios a un modelo, ¿cómo actualizo la base de datos?

Eche un vistazo a la ayuda de Django para migraciones de esquemas.

Si no le importa borrar los datos, la utilidad manage.py de su proyecto tiene una opción flush para restablecer la base de datos al estado en que estaba inmediatamente después de que migrate fue ejecutado.

¿Los modelos de Django soportan claves primarias en columnas múltiples?

No, sólo son soportadas claves primarias de columna única.

Pero esto no es un problema en la práctica, porque no hay nada que le impida agregar otras restricciones (usando la opción de modelo unique_together o crear la restricción directamente en su base de datos) y hacer cumplir la singularidad en ese nivel. Las claves primarias de una sola columna son necesarias para que funcionen cosas como la interfaz de administración; por ejemplo, necesita un único valor para especificar un objeto para editar o eliminar.

¿Soporta Django bases de datos NoSQL?

Las bases de datos NoSQL no son compatibles oficialmente con Django en sí mismo. Sin embargo, hay una serie de proyectos paralelos y bifurcaciones que permiten la funcionalidad NoSQL en Django

Puede echar un vistazo a la página wiki donde se discuten algunos proyectos.

¿Cómo añado opciones específicas de la base de datos a mis sentencias CREATE TABLE, tales como establecer MyISAM como el tipo de tabla?

Tratamos de evitar añadir casos especiales en el código de Django para ajustar todas las opciones específicas de base de datos como el tipo de tabla, etc. Si desea usar cualquiera de estas opciones, cree una migración con una operación RunSQL que contenga sentencias ALTER TABLE que hagan lo que usted quiere hacer.

Por ejemplo, si usa MySQL y desea que las tablas usen el tipo de tabla MyISAM, use el siguiente SQL:

ALTER TABLE myapp_mytable ENGINE=MyISAM;
Back to Top