python测试开发django-176.数据库迁移数据(manage.py dumpdata)
2023-04-18 15:35:45 时间
前言
manage.py dumpdata
是 django 自带的管理命令,可以用来备份你的模型实例和数据库.
dumpdata 命令
python manage.py -h
可以看到有个dumpdata 命令,用于备份数据库,把数据库表的内容转为 json/xml/yaml 格式
>python manage.py -h
Type 'manage.py help <subcommand>' for help on a specific subcommand.
Available subcommands:
[auth]
changepassword
createsuperuser
[authtoken]
drf_create_token
[contenttypes]
remove_stale_contenttypes
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
python manage.py dumpdata -h
查看相关参数
- -h 查看帮助文档
- —format 格式化输出导出的数据,支持导出数据格式为: json/xml/yaml
- —indent 美化json格式,json缩进空格数
- —database 指定要从中转储装置的特定数据库。 默认为“default”数据库
- —exclude(-e) 选择不需要备份的app或者表
- —natural-foreign 使用外键
- -a, —all 使用Django的基本管理器转储数据库中存储的所有模型,包括那些将由自定义管理器过滤或修改的模型。
导出数据
整个 django 使用到的数据库转存到 db.json 文件中(备份整个数据库)
python manage.py dumpdata > db.json
将 yoyo app 转存到 admin.json 中(备份特定的 app)
python manage.py dumpdata yoyo > yoyo.json
将 yoyo.person 表中的内容备份 (备份特定的表)
python manage.py dumpdata yoyo.person > person.json
—indent 加上一个代表空格数的数字 美化 json 格式
python manage.py dumpdata yoyo.person --indent 2 > person.json
如 yoyo_person 这张表的数据为
导出为 person.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
}
}
]
—format 格式化输出导出的数据,支持导出数据格式为:json/xml/yaml
python manage.py dumpdata yoyo.person --indent 2 --format yaml > person.yml
导出为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 导入数据
Django loaddata 是 django 自带的管理命令,可以用来导入固定格式的数据到数据库
可以先清空yoyo.person表数据,再导入数据
# 将 person.json 中数据库导入数据库
python manage.py loaddata person.json
命令执行完,数据就会导入到数据库了
相关文章
- Python使用tkinter组件Label显示简单数学公式
- 内网渗透之DCOM横向移动
- 以目标为导向的语义交流的共同语言——一个课程学习框架
- python爬虫前奏【成信笔记】
- HTML 5 File API:文件拖放上传功能
- 教你快速创建 Python 虚拟环境
- pyenv 实现Python多版本自由切换
- 用 Python 对 Excel文件进行批量操作
- Python - 接入钉钉机器人
- Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
- crontab - 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
- [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用
- Python科普系列——类与方法(上篇)
- SAP对STO的交货单执行PGI,报错 -Fld selectn for mvmt type 643 acct 400020 differs
- Spring Boot 实现通用 Auth 认证的 4 种方式
- 盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据
- OushuDB 学习经验分享(三):技术特点
- Java和Python思维方式的不同之处
- Python中日志记录新技能
- 奥比中光Gemini OpenCV—Python使用