Backup and restore Django model entries with manage.py script
Django applications development may be require transfering model entries from one database to another. Also production environment need periodically backups. Django manage.py script gives the opportunity for export data in text file and import then.
Dumpdata serves for take out data. When application names not set, manage.py script export all applications, specified in INSTALLED_APPS. Usage example:
python manage.py dumpdata
You may set one or more models. Example for export preassigned applications:
python manage.py dumpdata application_name.ModelName > database.json
Second important argument for dumpdata - output format. If it not defined - data will be exported in json. Available formats: json, jsonl, xml, yaml.
python manage.py dumpdata application_name.ModelName --format yaml > database.yaml
Loaddata import records from backup file, which exported with dumpdata. Syntax:
python manage.py loaddata database.json
Working with apllication, running in Docker. Here two ways for file exchanging between host machine and containers:
1. Specify volume when start container with docker run -v command or docker-compose.yaml.
2. Use docker cp command for download and upload files, as it shown in example below.
When you request data dumping in container and not setted up absolute location, it looks in WORKDIR from Dockerfile:
docker exec -it <container_name> python manage.py dumpdata > database.json
Now we're need to download dump file from container after it created:
docker cp <container_name>:/app/database.json .
Upload dump in container for restore. Remember, like a dumpdata, loaddata looks in WORKDIR:
docker cp ./database.json <container_name>:/app
Restore data from application's working directory:
docker exec -it <container_name> python manage.py loaddata database.json
Support me on Patreon
#database #django #django-model #docker #dumpdata #editor #loaddata