mvsoyg
Last Updated: July 23, 2017
·
63.98K
· itseranga
892414 10151468467596730 1847316210 o

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 into admin.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

Picture

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)

  1. json
  2. xml
  3. yaml
./manage.py dumpdata auth.user --indent 2 --format xml > user.xml
  • Above command output an xml file(user.xml)

Picture

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 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

./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
Say Thanks
Respond

5 Responses
Add your response

18076
None

Thanks for this tutorial. The steps worked for me, but I found that when I tried to restore, I got an out of memory error, because my file was too large. I ended up using raw postgres commands:

export: pg_dump <dbname> -t <tablename> -f out.sql

import: psql <dbname> -f out.sql

over 1 year ago ·
18885
None

There is lots of other cases where loaddata and dumpdata commands don't work. So pg_dump and psql are good, but the downside of them is that you lose the database configuration that is stored in the project settings (or the environment if you are 12factor aware).

over 1 year ago ·
25974
None

Thank you very much! Paragraph "Restore fresh database" saved me!

over 1 year ago ·
29108

Hi, thanks for this post. I was able to use it to save some dats into json but when I tried to load same data into the db, I got the error:

raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), pk)

local variable 'pk' referenced before assignment

How do I go around this error? Thanks

about 1 month ago ·
29127
King

Thanks! This is awesome. For some reason I actually got my Webfaction Django to accept fixtures. Def bookmark on this exact page!

26 days ago ·
Awesome Job

96b73d3e 7dde 11e7 8947 789166ad48cb
Sr. Computer Scientist
·
San Jose or San Francisco, Californ
·
Full Time