問題:當(dāng)部署 Django Server 時,有一些數(shù)據(jù)要在運行前初始化到數(shù)據(jù)庫中鞍帝,如何初始化就是我們要解決的問題
開發(fā)環(huán)境
System:Ubuntu 14.04.1 LTS
IDE:Pycharm 2018.1.2
Django:1.11.13
初始化數(shù)據(jù)入數(shù)據(jù)庫
在 app 下創(chuàng)建 fixtures导绷,再創(chuàng)建初始化文件 initial_data.json/xml/yaml弄捕,三種格式均可缩筛。
- 編寫初始化文件
initial_data.json
[
{
"model": "myapp.person",
"pk": 1,
"fields": {
"first_name": "John",
"last_name": "Lennon"
}
},
{
"model": "myapp.person",
"pk": 2,
"fields": {
"first_name": "Paul",
"last_name": "McCartney"
}
}
]
initial_data.yaml
- model: myapp.person
pk: 1
fields:
first_name: John
last_name: Lennon
- model: myapp.person
pk: 2
fields:
first_name: Paul
last_name: McCartney
- 把上面的數(shù)據(jù)同步到數(shù)據(jù)庫中
$ python manage.py loaddata initial_data.yaml # 此處不用寫具體路徑侯谁,只要文件在當(dāng)前 app/fixtures/ 目錄下即可
導(dǎo)出數(shù)據(jù)庫內(nèi)容為初始化文件
$ mkdir appname/fixtures # 必須有 fixtures 目錄锌仅,下面語句才能成功執(zhí)行
$ python manage.py dumpdata --format=json appname > appname/fixtures/initial_data.json
說明: 在不同 app 下相同名字的初始化文件,執(zhí)行初始化命令時良蒸,會同時都執(zhí)行完成技扼。
# 假設(shè)有兩個 app 下同時存在 initial_data.yaml
$ python manage.py loaddata initial_data.yaml
Installed 12 object(s) from 2 fixture(s) # 此處為兩張表共插入12條初始化數(shù)據(jù)