Django 初始化数据库数据的方法

问题:当部署 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条初始化数据

参考

Django 官方文档说明

你可能感兴趣的:(Django 初始化数据库数据的方法)