初试django---python manage.py makemigrations以及python manage.py migrate

Posted testxiaojiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初试django---python manage.py makemigrations以及python manage.py migrate相关的知识,希望对你有一定的参考价值。

无论当我们第一次在models.py中创建类对象还是对类中的属性进行修改,我们都会使用python manage.py makemigrations 和 python manage.py migrate 两个命令。

在models中第一次创建models类,如图所示

技术图片

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

 技术图片

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

技术图片

 

这个文件里面的内容表示我们创建了一个Employee这个模型类,并且指出这个类的成员属性id,name,以及他们的属性,我们知道在models.py创建模型类,每一个模型类对应的是一张数据表,来看看执行了刚刚的那条命令之后数据库中的变化,我们想要的数据表是不是已经创建好了,如下图所示:

技术图片

 

 

可以看到数据库里面并没有我们想要创建的数据表,那刚刚那条命令具体执行了什么语句,我们可以使用python manage.py sqlmugrate appname 文件名 进行查看:

 技术图片

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

 技术图片

下面再看一下数据库:

技术图片

 

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

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

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

python manage.py makemigrations appname,

python manage.py migrate appname,

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

python manage.py migrate appname 文件名

以上是关于初试django---python manage.py makemigrations以及python manage.py migrate的主要内容,如果未能解决你的问题,请参考以下文章

Django `python manage.py runserver` 不支持 asyncio&aiohttp

从 Django/Python3 部署到 Google Compute Engine Managed VM

Django,Python继承:从超类中排除一些字段

AWS Beanstalk Django / Python 运行本地问题

Django - Python 3 - “AssertionError:一个模型不能有多个 AutoField。”

直接初试化,拷贝初试化,值初试化