python测试开发django-177.启动项目添加初始化数据(fixtures的使用)
前言
当启动 django 项目的时候,有些表需要添加一些初始化数据,比如省份需先添加到数据库里面。
可以使用django 的fixtures 来初始化表的数据。
准备初始化数据
外面可以项目启动后表里面添加的初始化数据写成 JSON,XML 或 YAML (要求已安装 PyYAML)格式。
数据的准备可以使用 manage.py dumpdata
命令生成,参考前面一篇https://www.cnblogs.com/yoyoketang/p/15692968.html
这里有一个简单的yoyo.person 表perso.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
}
}
]
以下是一样的初始化内容,perso.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 加载数据
加载数据非常简单:只需调用 manage.py loaddata
每次你运行 loaddata,数据都会从固定内容读出,重新装入数据库。这意味着若你修改了某个固定内容创建的行,随后再次运行 loaddata ,你会丢掉所有的修改。
# 将 person.json 中数据库导入数据库
python manage.py loaddata person.json
Django 从哪里寻找固定内容文件
默认情况下,Django 在每个应用的 fixtures 目录中查找固定内容。你可以将配置项 FIXTURE_DIRS 设为一个 Django 需要额外寻找的目录列表。
manage.py loaddata 时,你也能指定一个到固定内容文件的路径,这将会覆盖查找常规目录的行为。
方式1:
在 app 下创建一个 fixtures 目录
json文件数据放到fixtures 目录
这样在执行loaddata 命令的时候,会默认从每个应用目录查找初始化的内容
python manage.py loaddata person.json
方式2:
如果不想放到app下的fixtures目录,也可以在setting文件配置FIXTURE_DIRS,用于 Django 需要额外寻找的目录列表
FIXTURE_DIRS = ('/path/to//fixtures/',)
方式3:
manage.py loaddata 时,你也能指定一个到固定内容文件的路径,这将会覆盖查找常规目录的行为。
参考官方文档https://docs.djangoproject.com/zh-hans/2.2/howto/initial-data/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-12-15 docker学习12-docker快速搭建禅道环境
2017-12-15 selenium+python自动化85-python3.6上SendKeys报错用PyUserInput取代