当前位置: 首页 > news >正文

Django学习-数据迁移与数据导入导出

文章目录

      • 一、数据迁移
      • 二、数据导入导出
        • 1. 数据导出
        • 2. 数据导入

一、数据迁移

数据迁移是将项目里定义的模型生成相应的数据表。主要的迁移指令如下:

#  第一次生成自定义模型与django admin自带模型迁移文件,后续只生成新增模型迁移文件。后面加App名称只生成指定app迁移文件
python manage.py makemigrations
#  第一次只运行自定义模型与django admin自带模型生成的迁移文件,后续只运行新增模型迁移文件。后面加App名称只运行指定app迁移文件
python manage.py migrate

注意:

  1. 新增模型字段必须将属性nullblank设为True或者为模型字段设置默认值(设置属性default)​,否则执行makemigrations指令会提示字段修复信息。

  2. 如果要重复执行migrations文件夹的某个.py文件,就只需在数据表django_migrations里删除相应的文件执行记录。一般情况下不建议采用这种操作,因为这样很容易出现异常,比如数据表已存在的情况下,再次执行相应的.py文件会提示table "xxx" already exists异常。

  3. migrate指令还可以单独执行某个.py文件,首次在项目中使用migrate指令时,Django会默认创建内置功能的数据表,如果只想执行indexmigrations文件夹的某个.py文件,那么可以在migrate指令里指定文件名。

D:\MyDjango>python manage.py migrate index 0001_initial
Operations to perform:Target specific migration: 0001_initial, from index
Running migrations:Applying index.0001_initial... OK
  1. migrate指令根据migrations文件夹的.py文件创建数据表,但在数据库里,数据表的创建和修改离不开SQL语句的支持,因此Django提供了sqlmigrate指令,该指令能将.py文件转化成相应的SQL语句。

二、数据导入导出

在实际开发过程中,我们经常对数据库的数据进行导入和导出操作,比如网站重构、数据分析和网站分布式部署等。除了使用数据库可视化工具实现数据的导入与导出之外,Django还为我们提供操作指令(loaddatadumpdata)来实现数据的导入与导出操作。

1. 数据导出
  • dumpdata指令末端使用了符号>和文件名data.json,这是将项目所有的数据都存放在data.json文件中,并且data.json的文件路径在项目的根目录(与项目的manage.py文件在同一个路径)​。
  • 如果只想导出某个项目应用的所有数据或者项目应用里某个模型的数据,那么可在dumpdata指令末端设置项目名称或项目名称的某个模型名称。
# 导出项目的所有数据
python manage.py dumpdata>data.json
# 导出项目应用index的所有数据
python manage.py dumpdata index >data.json
# 导出项目应用index的模型PersonInfo的数据
python manage.py dumpdata index.Personinfo>person.json
2. 数据导入
  • 若想将导出的数据文件重新导入数据库里,则可使用loaddata指令完成,该指令使用方式相对单一,只需在指令末端设置需要导入的文件名即可。
  • loaddata指令根据数据文件的model属性来确定当前数据所属的数据表,并将数据插入数据表,从而完成数据导入。
python manage.py loaddata data.json

一般情况下,数据的导出和导入最好以整个项目或整个项目应用的数据为单位,因为数据表之间可能存在外键关联,如果只导入某张数据表的数据,就必须考虑该数据表是否设有外键,并且外键所关联的数据表是否已有数据。

http://www.lryc.cn/news/415222.html

相关文章:

  • 【Nuxt】编程式导航和动态路由
  • 14. 计算机网络HTTPS协议(二)
  • 【算法设计题】实现以字符串形式输入的简单表达式求值,第2题(C/C++)
  • Kylin系列-入门
  • 力扣-46.全排列
  • 博物馆展厅AI交互数字人,解锁创新的文化交互体验
  • DS18B20数字温度传感器操作解析
  • 你的财富正在被一个叫做通货膨胀的怪兽给吞噬掉,你却浑然不觉。
  • 医疗设备漏费控制管理系统的必然性及未来发展性
  • 软件设计师笔记-网络基础知识
  • MMC和eMMC的区别
  • 亚马逊爬虫(Amazonbot)IP地址,真实采集数据
  • Spring Boot(八十四):集成Thumbnailator来生成缩略图
  • MySQL基础操作全攻略:增删改查实用指南(上)
  • SAP MM学习笔记 - 豆知识02 - MR21 修改物料原价,MM02 修改基本数量单位/评价Class,MMAM 修改物料类型/评价Class
  • 谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存
  • flutter开发环境搭建与android studio 安装配置
  • postgresql 字符串 替换
  • 如何强化学习神经网络
  • Hadoop未授权访问漏洞
  • Python中json模块的编码和解码
  • 【Linux】文件变身大作战:Linux下的文件重命名艺术
  • 字节的存储和字符的存储
  • Markdown插入Base64格式的图片,无需图床,稳定保存
  • weblogic 连接gaussdb测试数据源是否联通
  • 如何成为全域运营商?掌握这2种申请方式就够了!
  • @ConfigurationProperties加在方法上
  • 使用CUBEMX配置的USB大容量存储设备主机库获取LUN数量的不严谨代码纠正
  • 合并重叠的区间
  • docker和运维