• Mémo Sauvegarder sa base de données Django

  • Backup Django database

Finalité : faire un backup quotidien de ma base Django

Il est possible de faire un dump très facilement en utilisant l'utilitaire manage.py (cf le mémo dédié).

Il est cependant possible de le faire de manière programmatique et de récupérer en sortie un joli petit json !

import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
django.setup()
from django.core.management import call_command


def backup(filename):
    with open(filename, 'w') as output:
        call_command(
            'dumpdata',
            # Décommenter pour un backup spécifique à une application
            # 'myapp',
            natural_foreign=True,
            exclude=[
                'admin.logentry',
                'contenttypes',
                'auth.permission',
                'sessions.session',
                ],
            format="json",
            indent=2,
            stdout=output
        )


backup('mybackup.json')

Il suffit d'en faire une petite tache Celery, et c'est parti !


12 juin 2019 16:43