Django数据库迁移命令

Django数据库迁移命令

迁移命令 migrate 

 

python manage.py migrate  # 全部项目

python manage.py migrate  AppName # 一个项目


执行迁移命令必须确保当前在项目目录下(执行ls命令能看到 manage.py文件), 然后使用  python manage.py migrate  即可。

如果IDE为pycharm也可以在运行/调试配置中创建命令,下方我所有迁移命令均在pycharm中完成。

 


makemigrations (生成迁移脚本)

makemigrations 是我们多次使用的命令,他会将我们 model.py 中创建的数据库模型生成迁移脚本库,每次只要我们的数据库模型model.py中发生了变化,使用 python manage.py makemigrations 就会在migrations中创建一个记录我们变化的脚本

 


makemigrations 参数

 

python manage.py makemigrations # 全部项目

python manage.py makemigrations AppName # 一个项目


默认不带参数的情况下,makemigrations会迁移当前项目中所有APP中的模型,并且生成迁移脚本,并且迁移脚本库名当修改较少时会根据修改内容生成名称,但在数据库做过多修改时会生成一个为当前时间的名称。

makemigrations参数    作用
APP名称    可以填写一个或者多个app名称,那么就只会针对这几个app生成迁移脚本。
--name 名称    给这个迁移脚本指定一个名字。
--empty    生成一个空的迁移脚本。如果你想写自己的迁移脚本,可以使用这个命令来实现一个空的文件,

比如我下面写到

python manage.py makemigrations query --name add_VIP

可以直针对query APP生成迁移脚本,并且脚本名称为add_VIP

 


migrate (将迁移脚本映射进入数据库)

migrate也是非常常用的命令, 他将我们生成的映射脚本转换成SQL语句在指定的数据库中执行,在数据库中生成或修改表。

 


migrate参数

默认情况下,migrate会将所以APP中的映射脚本映射进入数据库
migrate参数    作用
APP名称    将一个或多个APP名称下的迁移脚本映射到数据库中。
APP名称 映射脚本    将某个app下指定名字的migration文件夹中的指定映射脚本映射到数据库中。
--fake    可以将指定的迁移脚本名字添加到数据库中。但是并不会把迁移脚本转换为SQL语句,修改数据库中的表。
--fake-initial    将第一次生成的迁移文件版本号记录在数据库中。但并不会真正的执行迁移脚本。

其中--fake与--fake-intial常用于解决迁移版本时报错使用,下方会详细讲解
showmigrations(查看迁移文件)

查看某个app下的迁移文件。如果后面没有app,那么将查看INSTALLED_APPS中所有的迁移文件。(此命令使用较少,大部分现代IDE中都会携带当前项目目录)

 


sqlmigrate(迁移使用SQL)

查看某个迁移文件在映射到数据库中的时候,转换的SQL语句
python manage.py sqlmigrate APP名 迁移脚本名,比如说下图第四个迁移脚本名为
0004_delete_text
除了写全民外,简写成编号也同样可以查询出来
python manage.py sqlmigrate APP名 迁移脚本编号编号需要完整编号,比如第四个要写成0004,不能是4

 



链接:https://blog.csdn.net/qq_39611230/article/details/105151677

=======================================

解决方法:

1、删除001_initial文件

2、删除django_migrations表中记录

由于Django自带的一个表django_migrations表中已经将之前生成的表添加进入了

=======================================

 python manage.py sqlmigrate UserManage 0001
令具体执行了什么语句

=======================================

 https://www.bilibili.com/video/BV1ba411h7Mi/

 

 

 

 

 

 

 

=======================================

 

=======================================

 

posted @ 2025-03-19 21:03  emanlee  阅读(333)  评论(0)    收藏  举报