当前位置: 首页 > 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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • BIMRender渲染器插件上线 |一款免费的模型实时渲染插件
  • AI在医学领域:使用眼底图像和基线屈光数据来定量预测近视
  • 浅谈面向数据报的协议-UDP协议
  • 一文带你快速了解——LVS负载均衡集群
  • [Unity]在场景中随机生成不同位置且不重叠的物体
  • C#-了解ORM框架SqlSugar并巧妙使用(附相关数据库工具)
  • 数据结构——排序(2):选择排序+交换排序
  • 算法力扣刷题记录 六十九【动态规划基础及509. 斐波那契数】
  • 鸿蒙AI功能开发【文档扫描控件】 场景识别服务
  • 【c++学习技术栈】
  • 如何利用现成的网络抓取工具提高效率和生产力
  • [kimi笔记]为什么csc.exe不可以双击运行
  • Java面试题(基础篇)②
  • 攻击者劫持 Facebook 页面用于推广恶意 AI 照片编辑器
  • 将nestjs项目迁移到阿里云函数
  • Electron入门介绍
  • emacs初体验
  • es6要点
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • JDK9: 集成 Jshell 和 Maven 项目.
  • mockjs让前端开发独立于后端
  • MySQL主从复制读写分离及奇怪的问题
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • rc-form之最单纯情况
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • ucore操作系统实验笔记 - 重新理解中断
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 用jQuery怎么做到前后端分离
  • # Redis 入门到精通(七)-- redis 删除策略
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)用.Net的File控件上传文件的解决方案
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • .gitignore文件使用
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net Core与存储过程(一)
  • .net mvc部分视图
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net通过类组装数据转换为json并且传递给对方接口
  • .net下的富文本编辑器FCKeditor的配置方法
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • :O)修改linux硬件时间
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?