# documentación de Django - 1.10.7

# FAQ: Bases de Datos y modelos

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

Asegúrese de que la opción `DEBUG` de Django esté fijada 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` sólo está disponible si: setting:DEBUG está fijada en `True`. Es una lista de diccionarios en el orden de ejecución de la consulta. Cada diccionario tiene lo siguiente:

    ``sql`` -- The raw SQL statement
    ``time`` -- How long the statement took to execute, in seconds.

`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 usted está utilizando bases de datos múltiples, usted puede utilizar la misma interfaz en cada miembro del diccionario “connections”:

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

Si necesita limpiar la lista de consultas de forma manual en cualquier momento de sus funciones, simplemente llame `reset_queries()` de la forma siguiente:

    from django.db import reset_queries
    reset_queries()

## ¿Puedo usar Django con una base de datos ya existente?

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 Djando soportan claves primarias en columnas múltiples?

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

Sin embargo, esto no debe suponer un problema en la práctica porque no hay nada que le impida añadir otras restricciones (utilizando la opción de modelo `unique_together` o creando la restricción directamente en su base de datos) y reforzar esa singularidad a ese nivel. Las claves primarias de columnas simples son necesarias para cosas como que la interfaz del sitio administrativo funcione, por ejemplo, usted necesita una forma sencilla de determinar el objeto a editar o borrar.

## ¿Soporta Django bases de datos NoSQL?

Las bases de datos NoSQL no son soportadas oficialmente por Django. Sin embargo, existen varios proyectos paralelos y forks que permiten la operatividad de NoSQL en Django, como Django non-rel.

También puede echar un vistazo a la ‘página Wiki’_ que discute algunas alternativas.

## ¿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 está usando MySQL y quiere que sus tablas usen el tipo de tabla MyISAM, use la siguiente sentencia SQL:

    ALTER TABLE myapp_mytable ENGINE=MyISAM;