Django dumpdata and loaddata
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
./manage.py dumpdata > db.json
dumpdata for backup specific app
- Following command will dump the content in django
admin
app intoadmin.json
file
./manage.py dumpdata admin > admin.json
dumpdata for backup specific table
- Following command will dump only the content in django
admin.logentry
table
./manage.py dumpdata admin.logentry > logentry.json
- Following command will dump the content in django
auth.user
table
./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
./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
./manage.py dumpdata auth.user --indent 2 > user.json
- Example output of above command is below
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
./manage.py dumpdata auth.user --indent 2 --format xml > user.xml
- Above command output an xml file(user.xml)
loaddata command
- This command can be use to load the fixtures(database dumps) into database
./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 youloaddata
in same database it works fine) -
To fix this problem, make sure to backup the database by excluding
contenttypes
andauth.permissions
tables
./manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json
- Now you can use
loaddata
command with a fresh database
./manage.py loaddata db.json