zoukankan      html  css  js  c++  java
  • makemigrations和migrate到底干了什么以及如何查询原生的sql语句

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

    python manger.py makemigrations

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

    可以在项目的migrations目录手动打开这个文件,看看里面是什么

    在此之后执行命令

    python manager.py migrate

    将该改动作用到数据库文件,比如产生table之类

    D:PycharmProjectsDemoDjango>python manage.py makemigrations   
    Migrations for 'webAppOne':
      webAppOnemigrations002_companyinfo.py  #  在migrations目录,并记录下你所有的关于modes.py的改动,没有作用到数据库
        - Create model CompanyInfo
    
    D:PycharmProjectsDemoDjango>python manage.py migrate  # 作用到数据库,创建表
    Operations to perform:
      Apply all migrations: admin, auth, contenttypes, sessions, webAppOne
    Running migrations:
      Applying webAppOne.0002_companyinfo... OK
    
    D:PycharmProjectsDemoDjango>

    当makemigrations之后会在项目的migrations目录产生了0001_initial.py 文件,可以查看下该migrations会对应的SQL命令

    python manage.py sqlmigrate webAppOne  0001

    D:PycharmProjectsDemoDjango>python manage.py sqlmigrate webAppOne 0001
    BEGIN;
    --
    -- Create model Userinfo
    --
    CREATE TABLE "webAppOne_userinfo" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "username" varchar(32) NOT NULL, "password" varchar(32) NOT NULL, "salary" integer NOT NULL
    );
    COMMIT;
    
    D:PycharmProjectsDemoDjango>

    表名组成结构为:应用名_类名(如:webAppOne_userinfo)。

    注意:尽管我们没有在models给表设置主键,但是Django会自动添加一个id作为主键。

  • 相关阅读:
    SpringBoot自定义FailureAnalyzer
    Linux 系统目录结构
    Spring Boot实战:静态资源处理
    Activiti7整合SpringBoot(十二)
    Acvitivi网关(十一)
    为什么阿里巴巴要禁用Executors创建线程池?
    lqb 基础练习 数列排序 (sort的使用)
    lqb 入门训练 A+B问题
    lqb 入门训练 序列求和 (PS:用长整数做数据的输入输出)
    lqb 入门训练 圆的面积 (PS: PI的精确计算方法 atan(1.0) * 4)
  • 原文地址:https://www.cnblogs.com/chenpengzi/p/11359423.html
Copyright © 2011-2022 走看看