初试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 文件名

原文地址:https://www.cnblogs.com/TestXiaojiu/p/10885848.html

时间: 2024-07-29 04:03:40

初试django(一)---python manage.py makemigrations以及python manage.py migrate的相关文章

Django 中 python manage.py makemigrations 与 python manage.py migrate

执行 python manage.py makemigrations django根据settings.py里面的INSTALLED_APPS项设置找到对应app里的models.py,应用里面创建的继承models.Model的类来,生成一个文件,记录着生成数据库表结构的一些数据. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.co

python manage.py makemigrations生成数据变化的问题

今天遇到的生成数据库的问题django生成数据库的话,使用的是两条命令,一个是python manage.py makemigrations,以及python manage.py migrate在设计数据库表的时候,一定要搞清楚表和表之间的关系,因为表和表之间有依赖,必须是首先生成A表,才能再生成B表每一个注册过的app下面都有一个makemigrations的文件夹,这个文件夹里面的文件就是记录数据表的迁移和变化的,如果是正常情况下使用命令生成的话,也是django自行按照顺序生成的迁移文件,

python manage.py makemigrations No changes detected

在修改了models.py后,有些用户会喜欢用python manage.py makemigrations生成对应的py代码. 但有时执行python manage.py makemigrations命令(也可能人比较皮,把migrations文件夹给删了),会提示"Nochangesdetected."可能有用的解决方式如下: 先python manage.py makemigrations --empty yourappname生成一个空的initial.py 再python m

Django 1.11 使用命令makemigrations命令无法执行表修改动作

由于在学习过程中,遇到models模型变动,变动后合并发生问题,故当时做了删除应用文件夹下migrations文件,由于数据库里无较多新数据,故删除后重建,但重建后执行模型合并操作结果为No Changes,不会对应用模型进行变动.参看此文档后修复此问题.http://blog.csdn.net/stephen_wong/article/details/46351505 解决方法: 执行python3 manage.py makemigrations --empty 你的应用名; 执行pytho

执行python manage.py makemigrations时报错TypeError: __init__() missing 1 required positional argument: 'on_delete'

在执行python manage.py makemigrations时报错: TypeError: __init__() missing 1 required positional argument: 'on_delete' 解决方法: 在连接外键时加上: on_delete=models.CASCADE 执行python manage.py makemigrations时报错TypeError: __init__() missing 1 required positional argument

Django同步数据库(/manage.py makemigrations) 报错

新起了环境,创建models.py 内容,想要同步到数据库,执行以下操作时 报错: ./manage.py makemigrations ./manage.py migrate *(第一个步骤为在该项目(app)下建立migrations目录,并记录关于models的内容及改动,第二部将改动记录到数据库文件,比如产生table) 报错代码: ImportError: Couldn't import Django. Are you sure it's installed and available

启动python解释器的命令(python manage.py shell和python的区别)

如果你曾经使用过Python,你一定好奇,为什么我们运行python manage.py shell而不是python.这两个命令都会启动交互解释器,但是manage.py shell命令有一个重要的不同: 在启动解释器之前,它告诉Django使用哪个设置文件. Django框架的大部分子系统,包括模板系统,都依赖于配置文件:如果Django不知道使用哪个配置文件,这些系统将不能工作. 如果你想知道,这里将向你解释它背后是如何工作的. Django搜索DJANGO_SETTINGS_MODULE

七日Python之路--第三天(之初试Django 2-2)

接上文.前面(1)(2)部分已经实现浏览器访问工程项目,并且能后台管理新创建的app. (二)第一个Django的app (3)教你开始写Django1.6的第1个app 前面已经完成了model(M)的设置.剩下的只有view(V)和urls(C)了.Django的视图部分,由views.py 和 templates完成. 在polls中,我们将创建4个视图: "index" 列表页 – 显示最新投票. "detail" 投票页 – 显示一个投票的问题, 以及用户

django中将views.py中的python方法传递给html模板文件

常规的模板渲染 from django.db import models # Create your models here. class ArticalType(models.Model): caption = models.CharField(max_length=16) class Category(models.Model): caption = models.CharField(max_length=16) class Artical(models.Model): title = mo