Preguntas Frecuentes: Bases de datos y modelos

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

Asegúrate de que la configuración de Django DEBUG esté establecida en True. Luego haz 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 está disponible solo si se establece DEBUG en True. Es una lista de diccionarios en el orden de ejecución de las consultas. Cada diccionario tiene lo siguiente:

  • sql - La sentencia SQL bruta

  • time - Durante cuánto tiempo se ejecutó la sentencia, en segundos.

connection.queries incluye todos los sentencias SQL – INSERT, UPDATE, SELECT, etc. Cada vez que tu aplicación accede a la base de datos, se grabará la consulta.

Si estás utilizando múltiples bases de datos (bases de datos múltiples), puedes utilizar la misma interfaz en cada miembro del diccionario connections.

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

Si necesitas borrar la lista de consultas manualmente en algún punto de tus funciones, llama a reset_queries(), como se muestra aquí:

from django.db import reset_queries

reset_queries()

¿Puedo usar Django con una base de datos existente?

Sí. Consulta:doc:Integrando con una base de datos heredada <howto/legacy-databases>.

¿Cómo actualizo la base de datos si hago cambios en un modelo?

Mira la documentación de Django sobre las migraciones de esquema: schema migrations.

Si no te importa borrar datos, la utilidad de tu proyecto manage.py tiene una opción flush para restablecer la base de datos al estado en que se encontraba inmediatamente después de ejecutar migrate.

¿Los modelos de Django admiten claves primarias en varias columnas?

Solo se admiten claves primarias de una sola columna.

Pero esto no es un problema en la práctica, porque no hay nada que impida agregar otras restricciones (utilizando la opción de modelo unique_together o creando la restricción directamente en tu base de datos), y aplicar la unicidad a ese nivel. Se necesitan claves primarias de una sola columna para cosas como la interfaz administrativa funcionen; por ejemplo, se necesita un solo valor para especificar un objeto para editar o eliminar.

¿Django admite bases de datos NoSQL?

Bases de datos NoSQL no están oficialmente soportadas por Django en sí mismo. Sin embargo, existen un número de proyectos laterales y bifurcaciones que permiten la funcionalidad NoSQL en Django.

Puedes echar un vistazo a la **página de la wiki**_ que discute algunos proyectos.

¿Cómo puedo agregar opciones específicas de base de datos a mis sentencias CREATE TABLE, como especificar que el tipo de tabla sea MyISAM?

Evitamos agregar casos especiales en el código de Django para adaptarnos a todas las opciones específicas del motor de base de datos, como el tipo de tabla, etc. Si deseas utilizar alguna de estas opciones, crea una migración con una operación RunSQL que contenga sentencias ALTER TABLE que realicen lo que desees hacer.

Ejemplo de cómo utilizar el tipo de tabla MyISAM en MySQL. Si deseas que tus tablas utilicen el tipo de tabla MyISAM, utiliza la siguiente sentencia SQL:

ALTER TABLE myapp_mytable ENGINE=MyISAM;