Django创建Web项目,命令python manage.py makemigrations 和 python manage.py migrate的区别

Django创建web项目,对models.py进行相关操作。
第一步:在models中第一次创建models类,如图所示:
这里写图片描述
第二步:执行命令 python manage.py makemigrations
这里写图片描述
会出现上图的错误,出现问题是好事,这样就会学到知识;分析错误发现少了mysqldb的module。
没关系,我们在pycharm上Install上就行了
安装方法:点击File–》settings–》project–》project interpreter –》右侧双击pip—》在输入框内输入mysqlclient –》点击Install Package进行安装
这里写图片描述
这里写图片描述
安装成功后,继续执行命令 python manage.py makemigrations
这里写图片描述
表示在应用目录下的migations的文件下多了一个0001_initial.py的文件
这里写图片描述
该文件里面的内容表示我们创建了一个project_jizhan这个模型类,并且指出这个类的成员属性id等以及他们的属性,我们知道在models.py创建模型类,其中一个模型类对应的是一张数据表,可结果是数据库里面并没有我们想要创建的数据表,那刚刚那条命令具体执行了什么语句,我们可以使用python manage.py sqlmugrate appname 文件名 进行查看

第三步:执行命令 python manage.py migrate,如下图:
这里写图片描述
下面我看一下数据库:
这里写图片描述
我们执行完这条命令之后,我们所想要创建的数据表出现了,对应的字段也出现了

那python manage.py makemigrations这个命令是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件例如:0001_initial.py文件,如果你接下来还要进行改动的话可能生成就是另外一个文件不一定都是0001文件,但是这个命令并没有作用到数据库,这个刚刚我们在上面的操作过程之后已经看到了,而当我们执行python manage.py migrate 命令时 这条命令的主要作用就是把这些改动作用到数据库也就是执行migrations里面新改动的迁移文件更新数据库,比如创建数据表,或者增加字段属性

另外一个需要注意的是这两个命令默认情况下是作用于全局,也就是对所有最新更改的models或者migrations下面的迁移文件进行对应的操作,如果要想仅仅对部分app进行作用的话 则执行如下命令:

python manage.py makemigrations appname,

python manage.py migrate appname,

如果要想精确到某一个迁移文件则可以使用:

python manage.py migrate appname 文件名

猜你喜欢

转载自blog.csdn.net/tyt_xiaotao/article/details/80188241