zoukankan      html  css  js  c++  java
  • 理解Django的makemigrations和migrate

    在你改动了 model.py的内容之后执行下面的命令:

    python manger.py makemigrations

    相当于在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件

    你可以手动打开这个文件,看看里面是什么。当makemigrations之后产生了0001_initial.py 文件,你可以查看下该migrations会对应于什么样子的SQL命令,使用如下命令,

    python manger.py sqlmigrate theapp 0001

    看到的大概是这样子的:

    1.  
      BEGIN;
    2.  
      CREATE TABLE "polls_choice" (
    3.  
      "id" serial NOT NULL PRIMARY KEY,
    4.  
      "choice_text" varchar(200) NOT NULL,
    5.  
      "votes" integer NOT NULL
    6.  
      );
    7.  
      CREATE TABLE "polls_question" (
    8.  
      "id" serial NOT NULL PRIMARY KEY,
    9.  
      "question_text" varchar(200) NOT NULL,
    10.  
      "pub_date" timestamp with time zone NOT NULL
    11.  
      );
    12.  
      ALTER TABLE "polls_choice" ADD COLUMN "question_id" integer NOT NULL;
    13.  
      ALTER TABLE "polls_choice" ALTER COLUMN "question_id" DROP DEFAULT;
    14.  
      CREATE INDEX "polls_choice_7aa0f6ee" ON "polls_choice" ("question_id");
    15.  
      ALTER TABLE "polls_choice"
    16.  
      ADD CONSTRAINT "polls_choice_question_id_246c99a640fbbd72_fk_polls_question_id"
    17.  
      FOREIGN KEY ("question_id")
    18.  
      REFERENCES "polls_question" ("id")
    19.  
      DEFERRABLE INITIALLY DEFERRED;
    20.  
       
    21.  
      COMMIT;


    在makemigrations之后执行命令:

    python manager.py migrate

    将该改动作用到数据库文件,比如产生table,修改字段的类型等。

  • 相关阅读:
    yCharm代码格式化(自动加空格)
    python调用另一个.py中的类或函数
    深度学习04--卷积神经网络
    深度学习03--神经网络
    深度学习02--数据读取
    深度学习01--TensorFlow
    机器学习08--实战案例
    机器学习07--无监督学习-K-means算法
    机器学习06--逻辑回归
    机器学习05--线性回归+岭回归
  • 原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/9285574.html
Copyright © 2011-2022 走看看