Administración de la base de datos

Completado

El ORM de Django va más allá de permitirle interactuar con los datos. También puede usarlo para crear y actualizar la base de datos mediante un proceso conocido como migraciones.

Migraciones

Una migración es una colección de actualizaciones que se realiza en el esquema de una base de datos. Un esquema de base de datos es la definición de la propia base de datos, incluidas todas las tablas y columnas y las relaciones entre esas tablas.

Cuando creamos nuestros modelos y definimos los campos, también definimos las tablas, columnas y relaciones entre esas tablas. Al crear los modelos, hemos creado la definición de esquema.

Las migraciones se usan para crear y actualizar la base de datos a medida que cambian los modelos. Como probablemente sabe, el software cambia constantemente. La forma en que se definen los modelos hoy podría ser diferente de cómo se definen mañana. Las migraciones nos ahorran el proceso de actualizar la base de datos nosotros mismos. Así pues, podemos realizar cambios en los modelos y usar Django para realizar los cambios necesarios en la base de datos.

Realización de una migración

Para crear una migración, use el comando makemigrations de manage.py. El comando makemigrations usa la lista actual de migraciones para obtener un punto de partida y, después, usa el estado actual de los modelos para determinar la diferencia (los cambios que se deben realizar). Por último, genera el código necesario para actualizar la base de datos. Después de ejecutar makemigrations, muestra el nombre de la migración.

python manage.py makemigrations

Visualización del SQL para la migración

Todas las operaciones que se producen dentro de una base de datos relacional requieren el Lenguaje de consulta estructurado (SQL). Las migraciones de Django generan el SQL adecuado cuando se ejecutan. Aunque puede usar las herramientas de migración para actualizar la base de datos directamente, algunos entornos pueden tener administradores de bases de datos que administren el proceso automáticamente.

Para compilar las instrucciones SQL adecuadas, puede usar sqlmigrate.

python manage.py sqlmigrate <app_label> <migration_name>

Nota:

La parte app_label es el nombre de la aplicación, normalmente el nombre de la carpeta que contiene la aplicación. La parte migration_name es el nombre de la migración. También puede ver el código de Python para las migraciones de cualquier aplicación en su carpeta migrations.

Visualización de la lista de migraciones

Si quiere ver todas las migraciones, puede usar showmigrations.

python manage.py showmigrations

Realización de una migración

El comando migrate ejecuta una migración específica o todas las migraciones en la base de datos configurada en settings.py en la raíz de la carpeta del proyecto.

Si abre settings.py, verá una sección DATABASES en la parte inferior. En esta sección se incluye una opción default, que en un nuevo proyecto está configurada para usar SQLite. Puede configurar diferentes cadenas de conexión de base de datos en esta sección según sea necesario.

python manage.py migrate <app_label> <migration_name>

Nota:

Las partes app_label y migration_name son opcionales. Si no proporciona ninguna, se ejecutarán todas las migraciones. Usará este comando con frecuencia durante el desarrollo.