python測試開發django-176.資料庫遷移資料(manage.py dumpdata)
阿新 • • 發佈:2021-12-15
前言
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的基本管理器轉儲資料庫中儲存的所有模型,包括那些將由自定義管理器過濾或修改的模型。
匯出資料
整個 django 使用到的資料庫轉存到 db.json 檔案中(備份整個資料庫)
python manage.py dumpdata > db.json
將 yoyo app 轉存到 admin.json 中(備份特定的 app)
python manage.py dumpdata yoyo > yoyo.json
將 django.admin.logentry 表中的內容備份 (備份特定的表)
python manage.py dumpdata admin.logentry > logentry.json
--indent 加上一個代表空格數的數字美化json格式
python manage.py dumpdata yoyo.person --indent 2 > person.json
如 yoyo_person 這張表的資料為
匯出為 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
- model: yoyo.person
pk: 4
fields:
name: yoyo
age: 22
loaddata 匯入資料
Django loaddata 是 django 自帶的管理命令,可以用來匯入固定格式的資料到資料庫
可以先清空yoyo.person表資料,再匯入資料
# 將 person.json 中資料庫匯入資料庫
python manage.py loaddata person.json
命令執行完,資料就會匯入到資料庫了