网站提示域名重定向怎么做centos做网站服务器吗

张小明 2026/1/11 17:01:55
网站提示域名重定向怎么做,centos做网站服务器吗,做图素材网站开哪个vip好,宝安网站公司Django 迁移系统全指南#xff1a;从模型到数据库的魔法之路 前言 你是否曾经遇到过这样的困扰#xff1a;写好了一个 Python 的 models.py 文件#xff0c;却发现不知道怎么在数据库中创建对应的表#xff1f;或者修改了模型定义后#xff0c;手动去数据库改表结构改得…Django 迁移系统全指南从模型到数据库的魔法之路前言你是否曾经遇到过这样的困扰写好了一个 Python 的models.py文件却发现不知道怎么在数据库中创建对应的表或者修改了模型定义后手动去数据库改表结构改得焦头烂额别担心Django 的迁移系统就是为了解决这个问题而生的今天我们就来深入了解一下这个强大的工具。一、什么是 Django 迁移系统Django 迁移系统是一个自动化的数据库版本控制系统它可以自动检测模型变化生成迁移文件记录变化历史自动执行 SQL来更新数据库简单来说你只需要写 Python 代码剩下的事情 Django 都帮你搞定二、核心概念两个命令2.1python manage.py makemigrations- 施工图纸这个命令负责检测模型变化并生成迁移文件。# apps/students/models.pyclassStudent(models.Model):namemodels.CharField(max_length100)agemodels.IntegerField()# 假设这是我们新增的字段运行命令后$ python manage.py makemigrations Migrationsforstudents:apps/students/migrations/0002_add_age_field.py - Add field age to studentDjango 会在apps/students/migrations/目录下生成一个新的 Python 文件# 0002_add_age_field.pyfromdjango.dbimportmigrations,modelsclassMigration(migrations.Migration):dependencies[(students,0001_initial),]operations[migrations.AddField(model_namestudent,nameage,fieldmodels.IntegerField(),),]⚠️ 注意这个命令不会修改数据库它只是准备了施工图纸。2.2python manage.py migrate- 真正施工这个命令负责执行迁移文件并修改数据库。$ python manage.py migrate Running migrations: Applying students.0002_add_age_field... OKDjango 会读取刚才生成的迁移文件执行相应的 SQLALTERTABLEstudents_studentADDCOLUMNageINT;并且会在django_migrations表中记录这个迁移已经被应用防止重复执行。三、两者的关系可以用一个简单的类比来理解┌─────────────────────────────────────────────────────────┐ │ makemigrations 编写施工图纸 │ │ (检测模型变化生成迁移文件) │ └──────────────────────┬──────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ migrate 按照图纸施工 │ │ (执行 SQL修改数据库) │ └─────────────────────────────────────────────────────────┘四、完整的工作流程场景为学生表添加性别字段第一步修改模型# apps/students/models.pyclassStudent(models.Model):namemodels.CharField(max_length100,verbose_name姓名)agemodels.IntegerField(verbose_name年龄)gendermodels.CharField(max_length10,choices[(male,男),(female,女)],defaultmale,verbose_name性别)# 新增字段第二步生成迁移文件$ python manage.py makemigrations Migrationsforstudents:apps/students/migrations/0003_add_gender_field.py - Add field gender to student第三步应用迁移$ python manage.py migrate Running migrations: Applying students.0003_add_gender_field... OK第四步查看结果mysqlDESCRIBEstudents_student;---------------------------------------------------------|Field|Type|Null|Key|Default|Extra|---------------------------------------------------------|id|bigint|NO|PRI|NULL|auto_increment||name|varchar(100)|NO||NULL|||age|int|NO||NULL|||gender|varchar(10)|NO||male||---------------------------------------------------------搞定数据库表已经自动更新了五、Django 会自动做什么✅ Django ORM 自动处理的操作示例生成的 SQL创建表创建Student模型CREATE TABLE添加字段新增gender字段ALTER TABLE ADD COLUMN修改字段修改name字段长度ALTER TABLE MODIFY COLUMN删除字段删除age字段ALTER TABLE DROP COLUMN创建索引indexTrueCREATE INDEX外键关系ForeignKeyFOREIGN KEY多对多ManyToManyField自动创建中间表❌ Django 不会做的创建数据库本身需要手动执行CREATE DATABASE删除数据库数据库的备份和恢复六、典型场景示例场景 1项目初始化# 1. 创建数据库手动做一次mysql-uroot-pCREATE DATABASE myproject CHARACTER SET utf8mb4;exit;# 2. 配置 settings.pyDATABASES{default:{ENGINE:django.db.backends.mysql,NAME:myproject,USER:root,PASSWORD:password,HOST:localhost,PORT:3306,}}# 3. 运行迁移创建所有表python manage.py migrate场景 2开发过程中修改模型# 修改 models.py 后python manage.py makemigrations# 检测变化python manage.py migrate# 应用到数据库场景 3团队协作# 同事 A 修改了模型并提交代码gitpull# 同事 B 拉取代码后python manage.py makemigrations# 检查是否有新迁移python manage.py migrate# 应用迁移七、常见问题与解决方案Q1: 如果数据库表已经存在怎么办情况 1表是通过 SQL 手动创建的# 先创建空迁移不执行 SQLpython manage.py makemigrations--empty# 然后标记为已应用告诉 Django 表已存在python manage.py migrate--fake情况 2数据库为空直接运行迁移python manage.py migrateQ2: 如何查看迁移历史# 查看所有迁移python manage.py showmigrations# 查看某个应用的迁移python manage.py showmigrations students# 查看迁移将执行的 SQL不实际执行python manage.py sqlmigrate students 0002Q3: 如何撤销迁移# 撤销最后一次迁移未应用python manage.py migrate students 0001# 删除迁移文件未应用rmapps/students/migrations/0002_add_age_field.pyQ4: 迁移冲突怎么办当多人同时修改同一个模型时可能出现冲突# 1. 创建新的迁移解决冲突python manage.py makemigrations--merge# 2. 应用迁移python manage.py migrate八、最佳实践✅ 推荐做法每次修改模型后立即运行迁移python manage.py makemigrationspython manage.py migrate将迁移文件纳入版本控制gitaddapps/*/migrations/*.pygitcommit-mAdd age field to Student不要手动修改迁移文件迁移文件由 Django 自动生成和依赖手动修改可能导致问题生产环境部署前先在测试环境验证# 测试环境python manage.py migrate--plan# 查看将要执行的操作❌ 避免的做法不要直接修改数据库表结构不要删除已应用的迁移文件不要在生产环境运行makemigrations九、总结对比表特性makemigrationsmigrate作用检测模型变化生成迁移文件执行迁移修改数据库修改数据库❌ 不修改✅ 执行 SQL产生文件✅ 生成.py文件❌ 不产生文件何时使用修改models.py后生成迁移文件后执行次数每次修改模型每次有新迁移可以撤销可以删除未应用的迁移可以回退到之前的版本十、进阶技巧1. 查看迁移计划不执行python manage.py migrate--plan2. 只运行特定应用的迁移python manage.py migrate students3. 回退到指定迁移python manage.py migrate students 00014. 生成空的迁移用于自定义操作python manage.py makemigrations--emptystudents结语Django 的迁移系统是一个强大而优雅的数据库管理工具它让开发者能够专注于业务逻辑而不是繁琐的 SQL 操作。记住这两个命令python manage.py makemigrations# 检测变化生成迁移文件python manage.py migrate# 应用迁移修改数据库就这么简单相关资源Django 官方文档 - 迁移Django 官方文档 - 操作希望这篇博客能帮助你理解 Django 的迁移系统如果还有疑问欢迎留言讨论
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

汶上网站建设哪家好物联网网站开发公司

YoloV8训练中融合Qwen-Image生成合成数据的实践路径 在智能交通、工业质检和安防监控等现实场景中,目标检测模型常常面临一个尴尬困境:关键类别的样本极少,标注成本却极高。比如“夜间湿滑路面行驶的车辆”或“佩戴口罩且低头行走的行人”&am…

张小明 2026/1/4 2:36:51 网站建设

上海市建设工程材料网站wordpress tml

第一章:为什么你的Cox回归结果总不显著?R语言调优实战解析在生存分析中,Cox比例风险模型(Cox Proportional Hazards Model)被广泛用于评估协变量对事件发生时间的影响。然而,许多研究者在使用R语言进行建模…

张小明 2026/1/10 21:04:38 网站建设

电子商务网站建设概述商城分销怎么做

数据标注平台是一款专为数据标注岗位设计的教学与实践软件,致力于在人工智能教育与企业实践中架起桥梁。平台打破传统教学中理论与实操的隔阂,其核心是服务于各大高校、职业院校的人工智能相关专业,以及正在进行智能化转型的企业的内部培训。…

张小明 2026/1/4 2:35:48 网站建设

招聘网站页面设计图片网络营销推广服务商

微观交通流仿真案例研究 1. 案例背景 在交通规划和管理中,微观交通流仿真软件(如Paramics)是重要的工具之一。通过仿真可以详细地模拟交通流的行为,帮助分析交通系统的性能、评估交通管理措施的效果以及优化交通设计。本节将通过具…

张小明 2026/1/11 12:08:21 网站建设

行政事业单位网站建设建筑安全员c证查询官网

5分钟上手智能桌面助手:字节跳动UI-TARS开源项目实战指南 【免费下载链接】UI-TARS-2B-SFT 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/UI-TARS-2B-SFT 还在为重复的电脑操作而烦恼吗?每天打开软件、点击按钮、复制粘贴...这些…

张小明 2026/1/4 2:34:44 网站建设

微网站开发要多少钱wordpress如何qq登录界面

第一章:为什么你的Dify项目总在音频上失败?在构建基于 Dify 的 AI 应用时,音频处理常常成为项目的瓶颈。尽管文本与图像模块运行流畅,但一旦涉及语音识别、合成或实时流处理,系统便频繁报错或响应迟缓。其根本原因往往…

张小明 2026/1/9 19:51:00 网站建设