Summary: in this tutorial, you’ll learn how to use the Django dumpdata
command to export the database into files.
Introduction to the Django dumpdata command
Sometimes, you want to move some common data from a test database to the production database.
To do that you use the dumpdata
command to export data in the test database into a file and import it to the production database using the loaddata
command.
The dumpdata
command has many options that allow you to:
- Export all model instances of all the apps (the whole database) into a file.
- Export all model instances of an app into a file.
- Export some model instances (some tables in the database) into a file.
The format of the output file can be xml
, json
, jsonl
, or yaml
. The following dump the whole database into a data.json
file:
python manage.py dumpdata > data.json
Code language: Python (python)
If you open the data.json
file, you’ll see lots of data. For example, the following shows the Employee’s instance:
...
{
"model": "hr.employee",
"pk": 5,
"fields": {
"first_name": "John",
"last_name": "Doe",
"contact": null,
"department": 1,
"compensations": [1, 2]
}
},
...
Code language: Python (python)
The sample model contains the following information:
- The model name (
hr.employee
). - The primary key value (
pk
). - The fields (
first_name
,last_name
,contact
,department
, andcompensations
) of theEmployee
model.
If you want to export the whole database to another format like XML
, you need to specify the format option:
python manage.py dumpdata > filename --format file_format
Code language: Python (python)
The file_format
can be json
, jsonl
, xml
, and yaml
.
For example, the following command exports the whole database into an XML
file:
python manage.py dumpdata > data.xml --format xml
Code language: Python (python)
Exporting data from a specific app
To export data of a specific app, you specify the app name:
python manage.py dumpdata app_name > filename.json
Code language: Python (python)
For example, the following command exports the model instances of the hr
app:
python manage.py dumpdata hr > hr.json
Code language: Python (python)
Exporting data from a specific model
To dump the data of a specific table, you specify the app name and model name as follows:
python manage.py app_name.model_name > filename
Code language: Python (python)
For example, the following command dumps all the instances of the Employee table in the HR
application:
python manage.py dumpdata hr.employee > hr_employee.json
Code language: Python (python)
Exporting data by excluding one or more models
Sometimes, you want to export data from all models except for one or more models. In this case, you can use the --exclude
option:
python manage.py --exclude app_name.model_name > filename
Code language: Python (python)
Note that the command may contain multiple --exclude
options so that you can exclude multiple models.
For example, the following export data from the whole database except for the contact model:
python manage.py --exclude hr.contact > data.json
Code language: Python (python)
The following command exports data from the whole database except for the contact and department models:
python manage.py --exclude hr.contact --exclude department > data.json
Code language: Python (python)
Summary
- Use the Django
dumpdata
command to export data of one or more models.