前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python测试开发django-177.启动项目添加初始化数据(fixtures的使用)

python测试开发django-177.启动项目添加初始化数据(fixtures的使用)

作者头像
上海-悠悠
发布2021-12-17 19:23:59
8450
发布2021-12-17 19:23:59
举报

前言

当启动 django 项目的时候,有些表需要添加一些初始化数据,比如省份需先添加到数据库里面。 可以使用django 的fixtures 来初始化表的数据。

准备初始化数据

外面可以项目启动后表里面添加的初始化数据写成 JSON,XML 或 YAML (要求已安装 PyYAML)格式。 数据的准备可以使用 manage.py dumpdata 命令生成,参考前面一篇https://www.cnblogs.com/yoyoketang/p/15692968.html

这里有一个简单的yoyo.person 表perso.json数据

代码语言:javascript
复制
[
{
  "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
  }
}
]

以下是一样的初始化内容,perso.yml格式:

代码语言:javascript
复制
- 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 加载数据

加载数据非常简单:只需调用 manage.py loaddata,是你刚创建的固定内容的文件名(如:perso.json)。 每次你运行 loaddata,数据都会从固定内容读出,重新装入数据库。这意味着若你修改了某个固定内容创建的行,随后再次运行 loaddata ,你会丢掉所有的修改。

代码语言:javascript
复制
# 将 person.json 中数据库导入数据库
python manage.py loaddata person.json

Django 从哪里寻找固定内容文件

默认情况下,Django 在每个应用的 fixtures 目录中查找固定内容。你可以将配置项 FIXTURE_DIRS 设为一个 Django 需要额外寻找的目录列表。 manage.py loaddata 时,你也能指定一个到固定内容文件的路径,这将会覆盖查找常规目录的行为。

方式1: 在 app 下创建一个 fixtures 目录

json文件数据放到fixtures 目录

这样在执行loaddata 命令的时候,会默认从每个应用目录查找初始化的内容

代码语言:javascript
复制
python manage.py loaddata person.json

方式2: 如果不想放到app下的fixtures目录,也可以在setting文件配置FIXTURE_DIRS,用于 Django 需要额外寻找的目录列表

代码语言:javascript
复制
FIXTURE_DIRS = ('/path/to//fixtures/',)

方式3: manage.py loaddata 时,你也能指定一个到固定内容文件的路径,这将会覆盖查找常规目录的行为。

参考官方文档https://docs.djangoproject.com/zh-hans/2.2/howto/initial-data/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 准备初始化数据
  • loaddata 加载数据
  • Django 从哪里寻找固定内容文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档