Django

Django dumpdata and loaddata

Django provides management commands, which can be use to backup(export) or import the model instances or whole database.

dumpdata command

It is a django management command, which can be use to backup(export) you model instances or whole database

dumpdata for basic database dump

Following command will dump whole database in to a db.json file

python manage.py dumpdata > db.json

dumpdata for backup specific app

Following command will dump the content in django admin app into admin.json file

python manage.py dumpdata admin > admin.json

dumpdata for backup specific table

Following command will dump only the content in django admin.logentry table

python manage.py dumpdata admin.logentry > logentry.json

Following command will dump the content in django auth.user table

python manage.py dumpdata auth.user > user.json

dumpdata (–exclude)

You can use --exclude option to specify apps/tables which don’t need being dumped

Following command will dump the whole database with out including auth.permission table content

python manage.py dumpdata --exclude auth.permission > db.json

dumpdata (–indent)

By default, dumpdata will output all data on a single line. It isn’t easy for humans to read

You can use the --indent option to pretty-print the output with a number of indentation spaces

python manage.py dumpdata auth.user --indent 2 > user.json

dumpdata (–format)

By default, dumpdata will format its output in JSON

You can specify the format using --format option

Command supports for following formats(serialization formats)

  • json
  • xml
  • yaml
python manage.py dumpdata auth.user --indent 2 --format xml > user.xml

loaddata command

This command can be use to load the fixtures(database dumps) into database

python manage.py loaddata user.json

This command will add the user.json file content into the database

Restore fresh database

When you backup whole database by using dumpdata command, it will backup all the database tables

If you use this database dump to load the fresh database(in another django project), it can be causes IntegrityError (If you loaddata in same database it works fine)

To fix this problem, make sure to backup the database by excluding contenttypes and auth.permissions tables

python manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json

Now you can use loaddata command with a fresh database

python manage.py loaddata db.json