python测试开发django-176.数据库迁移数据(manage.py dumpdata)
![作者头像](https://ask.qcloudimg.com/avatar/1566506/9n6ivc4put.png)
前言
manage.py dumpdata
是 django 自带的管理命令,可以用来备份你的模型实例和数据库.
dumpdata 命令
python manage.py -h
可以看到有个dumpdata 命令,用于备份数据库,把数据库表的内容转为 json/xml/yaml 格式
>python manage.py -h
Type 'manage.py help <subcommand>' for help on a specific subcommand.
Available subcommands:
[auth]
changepassword
createsuperuser
[authtoken]
drf_create_token
[contenttypes]
remove_stale_contenttypes
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
python manage.py dumpdata -h
查看相关参数
- -h 查看帮助文档
- —format 格式化输出导出的数据,支持导出数据格式为: json/xml/yaml
- —indent 美化json格式,json缩进空格数
- —database 指定要从中转储装置的特定数据库。 默认为“default”数据库
- —exclude(-e) 选择不需要备份的app或者表
- —natural-foreign 使用外键
- -a, —all 使用Django的基本管理器转储数据库中存储的所有模型,包括那些将由自定义管理器过滤或修改的模型。
![](https://ask.qcloudimg.com/http-save/yehe-1566506/0ef1e44ecd77d37bf5e5165656f343c5.png)
导出数据
整个 django 使用到的数据库转存到 db.json 文件中(备份整个数据库)
python manage.py dumpdata > db.json
将 yoyo app 转存到 admin.json 中(备份特定的 app)
python manage.py dumpdata yoyo > yoyo.json
将 yoyo.person 表中的内容备份 (备份特定的表)
python manage.py dumpdata yoyo.person > person.json
—indent 加上一个代表空格数的数字 美化 json 格式
python manage.py dumpdata yoyo.person --indent 2 > person.json
如 yoyo_person 这张表的数据为
![](https://ask.qcloudimg.com/http-save/yehe-1566506/ef4345e3408ccf7cc054f3c777219635.png)
导出为 person.json 后数据
[
"model": "yoyo.person",
"pk": 1,
"fields": {
"name": "yoyo",
"age": 111
"model": "yoyo.person",
"pk": 2,
"fields": {
"name": "yoyo2",
"age": 22
"model": "yoyo.person",
"pk": 3,
"fields": {
"name": "yoyo23",
"age": 33
"model": "yoyo.person",
"pk": 4,
"fields": {
"name": "yoyo",
"age": 22
]
—format 格式化输出导出的数据,支持导出数据格式为:json/xml/yaml
python manage.py dumpdata yoyo.person --indent 2 --format yaml > person.yml
导出为yml格式
- model: yoyo.person
pk: 1
fields:
name: yoyo
age: 111
- model: yoyo.person
pk: 2
fields:
name: yoyo2
age: 22
- model: yoyo.person
pk: 3
fields:
name: yoyo23
age: 33