Django 4 中使用数据迁移(migration)来管理数据库结构的变化。数据迁移可以创建、修改和删除数据库表、字段、索引等对象,以及填充初始数据。

下面是使用数据迁移的基本步骤:

1、在 app 的 models.py 中定义数据库模型。

2、在 app 的根目录下执行以下命令创建迁移:

python manage.py makemigrations

这个命令会自动扫描所有 app 中的 models.py 文件,并根据模型定义生成相应的迁移文件,保存在 app 的 migrations 目录下。

3、在 app 的根目录下执行以下命令执行迁移:

python manage.py migrate

这个命令会将所有未应用的迁移文件应用到数据库中,即创建、修改或删除数据库表、字段、索引等对象。

在执行迁移命令时,可以通过以下命令查看当前数据库中已应用的迁移:

python manage.py showmigrations

如果需要撤销某个迁移,可以使用以下命令:

python manage.py migrate <app_name> <migration_name>

其中,<app_name> 是 app 的名称,<migration_name> 是迁移文件的名称,不需要包括 .py 后缀。这个命令会将指定的迁移文件撤销掉,并回滚数据库中的相关操作。

需要注意的是,执行数据迁移前,需要先进行数据库的配置和初始化,例如在 settings.py 文件中指定数据库连接参数,创建数据库等。在使用数据库迁移时,还需要注意以下几点:

  • 尽量不要手动修改数据库表结构或数据,而是通过数据迁移来管理数据库变化,以保证迁移的正确性和一致性。

  • 在修改模型时,一定要生成新的迁移文件,而不是直接修改已有的迁移文件。

  • 在执行迁移命令前,应该先备份数据库,以便出现问题时可以恢复数据。

  • 在多人协作开发时,应该使用版本控制工具来管理迁移文件的提交和合并。

特别注意:明明只新建了一个表,却迁移了那么多,那是以为第一次的迁移中包括系统默认的表,例如:用户表、权限表

Django4全栈进阶之路7 makemigrations和migrate迁移的更多相关文章

  1. web前端全栈学习之路

    web前端全栈学习之路 --- 陆续更新中 一.HTML相关 1.HTML常用标签:http://www.cnblogs.com/wyb666/p/8733699.html 2.HTML5基础: 3. ...

  2. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  3. 你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦

    你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦

  4. C#.Net全栈工程师之路-学习路径

    C#.Net全栈工程师之路-学习路径 按架构分: C/S架构: B/S架构: Mobile移动开发: 按技术点分: C#编程基础以及OOP面向对象编程: 数据库基础以及高级应用(MYSQL+MSSQL ...

  5. 战争热诚的python全栈开发之路

    从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...

  6. Python全栈开发之路 【第四篇】:Python基础之函数

    本节内容 函数def: 1.位置参数,默认参数 2.位置参数,关键参数 3.如果参数中出现 *users,传递的参数就可以不再是固定的个数, 传过来的所有元素进行打包成元组 *args,**kwarg ...

  7. Python全栈开发之路 【第七篇】:面向对象编程设计与开发(1)

    本节内容 一.编程范式 编程指的是写程序.敲代码,就是指程序员用特定的语法.数据结构和算法编写的代码,目的是来告诉计算机如何执行任务的. 在编程的世界里最常见的两大流派是:面向过程与面向对象.“功夫的 ...

  8. Python全栈开发之路 【第一篇】:Python 介绍

    本节内容 一.Python介绍 python的创始人为荷兰人——吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...

  9. Python全栈开发之路 【第五篇】:Python基础之函数进阶(装饰器、生成器&迭代器)

    本节内容 一.名称空间 又名name space,就是存放名字的地方.举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方. 名称空间共3种,分别如下 ...

  10. python全栈开发之路

    一.Python基础 python简介 python数据类型(数字\字符串\列表) python数据类型(元组\字典) python数据类型(集合) python占位符%s,%d,%r,%f prin ...

随机推荐

  1. vue-print-nb的应用

    1.cnpm i vue-print-nb 2.触发事件:v-print="printObj" 3.触发的是个对象: printObj:{                 id: ...

  2. CSS clip-path 属性

    属性定义及使用说明 clip-path 属性使用裁剪方式创建元素的可显示区域.区域内的部分显示,区域外的隐藏.可以指定一些特定形状. 注意: clip-path 属性将替换已弃用的 clip 属性. ...

  3. Android笔记--对话框

    提醒对话框AlertDialog 具体实现: 相关用法: 日期对话框DatePickerDialog DatePicker 具体实现: 使用Dialog选择日期: 时间对话框TimePickerDia ...

  4. Linux & 标准C语言学习 <DAY8_1>

    一.进制转换     1.为什么要使用二进制.八进制.十六进制         因为目前的CPU只能识别高低两种电平,只能对二进制数据进行计算         二进制虽然能够直接被计算机识别,但是不方 ...

  5. 一篇文章带你了解Java中的运算符

    前言 在前一篇文章中,壹哥给大家讲解了Java数据类型之间的转换,包括自动类型转换.强制类型转换.隐含的强制类型转换等问题.且在上一篇文章中,我还简单地给大家提到了Java的类型提升.在类型提升的案例 ...

  6. 剑指 offer 第 3 天

    第 3 天 字符串(简单) 剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are h ...

  7. ArcMap安装OSM路网数据编辑插件ArcGIS Editor for OSM的方法

      本文介绍在ArcGIS下属的ArcMap软件中,ArcGIS Editor for OpenStreetMap这一工具集插件的下载与安装的具体方法.   ArcGIS Editor for Ope ...

  8. 1.封装PageHelper实现分页

    前言 这几天想着动手将一些技术融合到项目中,昨天思考了会儿,想起了我与亲戚的对话:我说:"我想将若依项目完整的实现一遍",亲戚给我反馈到"你没必要完整复现若依项目,而且你 ...

  9. 5.mapper出错原因

    1.总结:前个星期mapper出错,很大原因是自己的项目结构创建有问题,大项目下应该是spring init那种项目结构形式,但是在创建多模块的时候应该是使用moudle形式的项目结构: 所以自己在运 ...

  10. wpf RelativeSource绑定

    RelativeSource有四种类型 Self FindAncestor TemplatedParent PreviousData a.Self Self用于绑定源和绑定目标相同的场景中.对象的一个 ...