【Django2.0】python manage.py makemigrations 和 python manage.py migrate的区别

不管当咱们第一次在models.py中建立类对象仍是对类中的属性进行修改,咱们都会使用python manage.py makemigrations 和 python manage.py migrate 两个命令,单纯从这两这个命令来看的话其实仅仅只是后面makemigrations和migrate的区别python

  在models中第一次建立models类,如图所示:sql

  

  下面使用python manage.py makemigrations 命令:数据库

   

  红线框中表示在blog应用目录下的migations的文件下多了一个001的文件,咱们来看看这个文件中的具体内容是什么:app


  

这个文件里面的内容表示咱们建立了一个Employee这个模型类,而且指出这个类的成员属性id,name,以及他们的属性,咱们知道在models.py建立模型类,其中一个模型类对应的是一张数据表,来看看执行了刚刚的那条命令止以后数据库中有没有发生什么变化,咱们想要的数据表是否是已经建立好了,以下图所示:.net

能够看到数据库里面并无咱们想要建立的数据表,那刚刚那条命令具体执行了什么语句,咱们可使用python manage.py sqlmugrate appname 文件名 进行查看:3d

和0001文件中的内容是一致的,下面开始执行python manage.py migrate,以下图:code

下面再看一下数据库:对象

咱们发下执行完指一条命令以后,咱们所想要建立的数据表出现了,对应的字段也出现了blog

   到这里咱们差很少就知道了,python manage.py makemigrations这个命令是记录咱们对models.py的全部改动,而且将这个改动迁移到migrations这个文件下生成一个文件例如:0001文件,若是你接下来还要进行改动的话可能生成就是另一个文件不必定都是0001文件,可是这个命令并无做用到数据库,这个刚刚咱们在上面的操做过程以后已经看到了,而当咱们执行python manage.py migrate 命令时  这条命令的主要做用就是把这些改动做用到数据库也就是执行migrations里面新改动的迁移文件更新数据库,好比建立数据表,或者增长字段属性get

   另一个须要注意的是这两个命令默认状况下是做用于全局,也就是对全部最新更改的models或者migrations下面的迁移文件进行对应的操做,若是要想仅仅对部分app进行做用的话  则执行以下命令:

python manage.py makemigrations appname,

python manage.py migrate appname,

若是要想精确到某一个迁移文件则可使用:

python manage.py migrate appname 文件名

转自:https://blog.csdn.net/hpu_yly_bj/article/details/78928089

相关文章
相关标签/搜索