尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Django数据库迁移深度指南:migrate与makemigrations如何管理Schema变更(新手必读)
Django数据库迁移深度指南migrate与makemigrations如何管理Schema变更新手必读【免费下载链接】djangoThe Web framework for perfectionists with deadlines.项目地址: https://gitcode.com/GitHub_Trending/dj/djangoDjango 数据库迁移Migrations是管理数据库 Schema 变更的核心机制只需makemigrations和migrate两条命令就能把模型代码的每一次改动安全地同步到数据库。本指南面向新手讲清这两条命令的职责、常用辅助命令与常见坑让你彻底告别手动改表结构。1️⃣ 为什么需要 Django 数据库迁移想象你改了一个字段把Title从短文本变长、新增一个必填字段、或者干脆删掉一张表。数据库不会自动感知这些变化——模型代码.py和数据库表结构Schema必须保持一致否则轻则报字段不存在重则数据错乱。Django 迁移的思路非常直观概念类比说明迁移文件数据库的代码提交记录每个.py文件描述一次 Schema 变更按顺序编号makemigrationsgit diff对比模型与当前 Schema生成变更脚本migrategit apply按顺序把迁移执行到数据库所有迁移文件都集中存放在各应用的migrations/目录例如 django/db/migrations/ 就是 Django 框架自身应用的迁移目录团队里每个成员执行相同的迁移序列得到的数据库结构完全一致。2️⃣ 第一步makemigrations 生成迁移文件当你修改了模型比如给Question加一个slug字段运行python manage.py makemigrations它的工作流程是自动检测器django/db/migrations/autodetector.py对比你写好的模型定义和上一次迁移记录的 Schema 状态差异被翻译成AddField、AlterField、CreateModel等操作对象自动生成一个类似0002_question_slug.py的迁移文件。 小技巧加--check参数只检测不写文件适合放进 CI 检查是否有人改了模型忘了提交迁移。源码实现见 makemigrations.py。上基于模型自动生成的后台表单——模型字段一变表单随之改变这正是Schema 与代码一致的价值所在。3️⃣ 第二步migrate 把变更应用到数据库python manage.py migrate这条命令Updates database schema. Manages both apps with migrations and those without.见 migrate.py。它会查询数据库中的迁移记录表找出哪些迁移已执行按依赖顺序执行器负责依次运行未执行的迁移每一步都在数据库事务中完成失败可整体回滚避免留下半成品表结构。常用参数速查参数作用migrate polls只迁移polls应用migrate zero回滚该应用的所有迁移撤销到空状态migrate --plan只列出将要执行的迁移不真正执行migrate --fake标记为已执行但不跑 SQL适用于手工已建表场景4️⃣ 三个新手救星命令showmigrations查看迁移状态python manage.py showmigrations每个迁移前会打[X]已执行或[ ]待执行是排查我到底跑到哪一步了的第一工具。源码showmigrations.py。sqlmigrate只看 SQL 不执行python manage.py sqlmigrate polls 0002把指定迁移翻译成纯 SQL 打印出来——上线前预演表结构变更、评估锁表风险时非常有用。源码sqlmigrate.py。squashmigrations合并历史迁移文件积累多了比如上百个会拖慢初始化速度squashmigrations能把一段历史压缩成一个文件。源码squashmigrations.py。5️⃣ 团队协作中的典型场景上Schema 同步后后台数据列表正常展示——这正是迁移机制保障的代码与数据库一致效果。同事 A 改了模型他提交迁移文件同事 Bgit pull后执行migrate本地数据库即刻对齐多人同时开发冲突如果两个迁移都叫0003_xxx产生编号冲突用makemigrations --merge生成合并迁移即可部署新环境全新数据库直接跑migrate会按 0001 → 0002 → … 顺序把全部历史迁移执行完一步到位。加载迁移的底层逻辑在 loader.py它会把各应用的迁移构建成一个有向无环图DAG保证依赖关系正确。6️⃣ 新手避坑清单❌ 坑✅ 正确做法手工改数据库表后不记录改动模型后用makemigrations补一个迁移删字段/改类型时直接执行先用sqlmigrate预览大数据表评估停机时间在迁移里写业务逻辑数据迁移放在RunPython中且必须可逆、幂等忘记提交迁移文件团队约定改模型必须同时提交迁移7️⃣ 总结记住两条命令即可入门 完整流程一句话改模型 →makemigrations生成脚本 → 审查脚本 →migrate应用到数据库。想深入实践推荐阅读官方教程文档 howto/writing-migrations.txt里面手把手演示了手写迁移、处理冲突和数据迁移命令参数的完整定义可对照 migrate.py 与 makemigrations.py。掌握这套机制后你的 Django 数据库 Schema 变更就像代码一样——可追踪、可回滚、可协作。【免费下载链接】djangoThe Web framework for perfectionists with deadlines.项目地址: https://gitcode.com/GitHub_Trending/dj/django创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

手机相机实拍对比测试全流程:从变量控制到EXIF样张分析

手机相机实拍对比测试全流程:从变量控制到EXIF样张分析

红米 K100 Pro Max、Galaxy S26 Ultra 和 iPhone 17 Pro Max 这类旗舰机型列在一起做实拍相机对比测试,真正的难点不是按下快门,而是让每一次快门之间的拍摄条件具备可比性。很多人在多机对比时习惯直接打开自动模式随手拍,再凭缩略图观感下结…

📅 2026/9/6 9:33:22
689款开源应用:打造你的专属macOS生产力工具箱

689款开源应用:打造你的专属macOS生产力工具箱

689款开源应用:打造你的专属macOS生产力工具箱 你是否曾为寻找高质量macOS应用而烦恼?面对App Store中琳琅满目的付费软件,是否渴望找到既免费又功能强大的替代方案?今天,我要为你介绍一个宝藏项目——open-source-ma…

📅 2026/9/12 3:15:00
零靠墙电动沙发深度解析:顾家6601B如何实现扫地机自由

零靠墙电动沙发深度解析:顾家6601B如何实现扫地机自由

顾家家居 KUKA 电动沙发 6601B 这个型号,最值得关注的不只是“电动”两个字,而是“零靠墙”和“可进扫地机”这两个设计点。很多人在展厅里试电动沙发,躺下那一刻觉得舒服,回家装完才发现沙发背后留着一条二三十厘米的缝隙——既能…

📅 2026/10/7 9:56:13
MORE NEWS

更多资讯

📰

ASP影视站源码解析:从部署到二次开发全指南

简介:这是一套面向视频站点搭建者的ASP源码程序,即ADN视频收藏专家ACC版,适合希望快速部署影视资源站、需要采集与静态化功能的站长或开发者使用。压缩包共414个文件,以89个asp动态页面、70个js脚本、185个gif界面素材为主&#x…

📰

QuartusⅡ交通灯控制电路设计:状态机与Verilog实现

简介:这份资源面向数字逻辑电路设计的学习者与课程实践者,提供一套基于QuartusⅡ的十字路口交通灯控制电路完整工程。设计涵盖甲车道主道75秒、乙车道辅道25秒的交替通行逻辑,黄灯先亮3秒再切换车道,且黄灯期间每秒闪亮一次&#…

📰

STM32F103实现1024点FFT频谱分析:从ADC采样到串口输出的完整工程示例

简介:这是一份面向STM32F103微控制器与ARM Cortex-M3平台的FFT例程包,适合嵌入式开发初学者和有一定单片机基础的工程师。例程基于STM32 HAL库构建,围绕快速傅里叶变换演示完整的频谱分析处理流程,可用于音频分析、振动检测、滤波…

📰

STC8G1K08驱动WS2812:8脚单片机带240颗RGB灯实战

简介:本资源是一份基于STC8G1K08-36I-SOP8单片机驱动WS2812炫彩LED灯的完整C51嵌入式开发项目,面向嵌入式初学者、单片机课程设计学生及硬件爱好者,解决单线协议RGB灯精准时序控制这一典型难点。压缩包共34个文件,含6个核心C源码&…

📰

Office宏被阻止?MOTW标记与信任位置全解析

1. 这个报错到底在说什么如果你经常跟Excel、Word或者PowerPoint里的VBA宏打交道,大概率见过这个弹窗:“Microsoft 已经阻止宏运行,因为此文件的来源不受信任。” 点开详细信息,还会看到一句更具体的提示,大意是这个文…

📰

如何编写你自己的Claude-Skill:从SKILL.md到Python工具的完整教程

【免费下载链接】Claude-Skills 385 AI skills, 77 expert agents, and 900 stdlib Python tools for every team: engineering, PM, marketing, C-level, compliance, business ops, research, and a LinkedIn toolkit. Installs on Claude Code, Cursor, Codex, Gemini, Copi…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬