问题:当部署 Django Server 时,有一些数据要在运行前初始化到数据库中,如何初始化就是我们要解决的问题
开发环境
System:Ubuntu 14.04.1 LTS
IDE:Pycharm 2018.1.2
Django:1.11.13
初始化数据入数据库
在 app 下创建 fixtures,再创建初始化文件 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
- 把上面的数据同步到数据库中
$ python manage.py loaddata initial_data.yaml # 此处不用写具体路径,只要文件在当前 app/fixtures/ 目录下即可
导出数据库内容为初始化文件
$ mkdir appname/fixtures # 必须有 fixtures 目录,下面语句才能成功执行
$ python manage.py dumpdata --format=json appname > appname/fixtures/initial_data.json
说明: 在不同 app 下相同名字的初始化文件,执行初始化命令时,会同时都执行完成。
# 假设有两个 app 下同时存在 initial_data.yaml
$ python manage.py loaddata initial_data.yaml
Installed 12 object(s) from 2 fixture(s) # 此处为两张表共插入12条初始化数据