Administración de la base de datos
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.