martes, 8 de junio de 2021

Migrando datos entre Bases de Datos en Django: Backup, y Recuperar datos

CÓDIGO FUENTE PYTHON: ¿Cómo generar backups Django desde archivo Python?

Hola amigos y amigas de mateandcode. Hoy les traemos este humilde pero muy útil tutorial de como pasar datos entre Bases de Datos.

Las razones para hacer esto pueden ser varias.

  • Backups de seguridad y su posterior recuperación
  • Cambiar de Base de Datos
  • Cambiar de tipo de base de datos
  • etc etc etc...

 

Por suerte esta tarea es muy sencilla en Django y no hay que instalar nada adicional.

 

Los toda la tarea se resume en estos 4 sencillos pasos:

  1.  Hacer el backup a la BD actual
  2. Cambiar en el settings.py la BD
  3. Migrar los modelos ORM a la nueva BD
  4. Cargar los datos en la nueva BD

 ¡¡Vamos a verlos en detalle!!

 Paso 1 - Hacer el backup

Este paso es muy sencillo, nos ubicamos en la carpeta del proyecto (si, en donde hacemos el manage.py runserver)

El comando que debemos ejecutar es el siguiente:

$ python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission 
--indent 2 > dump.json

Y con esto tendremos nuestro archivo (dump.json en este caso) con la información de nuestra BD

Vemos como en nuestra carpeta principal se genera el archivo de backup "dump.json"

Paso 2 -  Cambiar en el settings.py la BD:

 Este proceso es sencillo pero dejo un pequeño ejemplo de cambiar una BD SQLite3 a una PostgreSQL en un server remoto (elephantSQL, servicio que se los recomiendo altamente para pruebas)

Simplemente vamos a nuestro archivo settings.py y cambiamos la variable que contiene información de la BD por la nueva:

Ej:

 Cambiamos de:

# SQLite
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

Por:

# PostgreSQL 
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'kxpaeguqy',
'USER': 'kxpaeguqy',
'PASSWORD': 'oGLE0d_H82m0Ed219aaQ-pvSx7nfvKD_',
'HOST': 'motty.db.elephantsql.com',
'PORT': '5432',
}

 

 Paso 3 - Migrar los modelos ORM a la nueva BD

 Este paso es muy sencillo y debería ser conocido por la mayoria, simplemente corremos en la carpeta principal del proyecto, el comando:

$ python manage.py migrate

 Y se aplicaran todas las migraciones en la nueva BD.

 Paso 4 - Cargar los datos en la nueva BD

 Una vez que tenemos configurada la nueva BD y corriendo correctamente, solo queda cargar los datos de la anterior BD en esta nueva.

 

Para ello corremos el siguiente comando en la carpeta principal del proyecto:

$ python manage.py loaddata dump.json

Y tendremos un resultado similar a este:


nota: dump.json o el nombre que le hayamos puesto a nuestro archivo de backup

nota2: dump.json en realidad es la ruta al archivo, si lo tenemos en la misma carpeta queda asi tal cual, sino, suponiendo que lo tenemos en una carpeta en un directorio superior llamado "resguardos" por ejemplo hariamos lo siguiente:

 
$ python manage.py loaddata ../resguardos/dump.json
 

Y con esto tenemos nuestro trabajo terminado y nuestra nueva BD con los datos corriendo.


Bueno amigos y amigas espero que esta sencilla guía los haya aclarado un poco.


Saludos y aprovechen a matear copado ahora que viene el frio 😉🧉


No hay comentarios.:

Publicar un comentario