Cómo crear migraciones de datos Django

data-migrations

A veces, tiene una estructura bien definida en su base de datos, pero debe refactorizarla. Este refactor implica cambios duros y sensibles que pueden dañar su base de datos. Ahí es donde aparece la migración de datos, para facilitar esos cambios.

«Además de cambiar el esquema de la base de datos, también puede utilizar las migraciones para cambiar los datos en la base de datos, junto con el esquema si lo desea». Hay muchos casos útiles en los que podemos usar Migraciones Django, por ejemplo, cuando necesitamos agregar un nuevo campo slug no anulable a un modelo de Usuario. Además, si deseamos agregar el campo fullName al modelo de Usuario, fullname sería una concatenación entre firstName y lastName, en esos casos necesitamos llenar los campos con datos que ya están en la base de datos. Otros casos de uso son cuando necesitamos cambiar una clave foránea a una relación de Muchos a Muchos o viceversa.

Las Migraciones de Datos le permiten cambiar los datos en la base de datos de acuerdo con el esquema. Debe activar la creación de la migración manualmente. Las migraciones de datos mantienen las características de una migración de esquema típica, como dependencias de otras migraciones.

En esta publicación cubriremos un caso simple en el que queremos cambiar la clave foránea entre dos modelos, veamos:

El modelo de cliente está asociado con una clave foránea para el modelo Car.

Agregaremos la nueva clave externa al modelo Car y luego ejecutaremos makemigrations, para crear automáticamente el nuevo campo, notaremos que la ForeignKey está asociada con un String ‘client.Client’ y no a la clase de modelo, y eso es porque Django permite configurar el modelo usando una cadena para evitar importaciones circulares, lo cual es algo bueno.

Ahora, escribamos:

python manage.py makemigrations –empty car

El comando anterior creará una migración en blanco:

En este nuevo archivo, cambiaremos la relación dentro de la operación RunPython.

RunPython es la operación principal que usa para migraciones de datos.

Luego podemos eliminar la relación de Car dentro del Cliente y generar el archivo de migración automáticamente.

Finalmente, debemos migrar y podremos ver la nueva estructura de datos.

La migración de datos es muy útil cuando necesita modificar datos sin perder información, pero es importante mantener un backup de su base de datos antes de hacer esta migración, si algo sucede y el código no funciona bien durante la migración, perderá información , y deberá importar su backup e intentarlo de nuevo.

Debemos realizar la migración de datos con precaución, más que nada cuando aplicamos esos cambios en el sitio de producción, por lo que si es una buena idea hacer un backup del sitio de producción y probarlo en el sitio de preparación. Además, si hacemos las migraciones paso a paso, como lo hacemos en el ejemplo anterior, tendremos más control.