• makemigrations和migrate到底干了什么以及如何查询原生的sql语句


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

    python manger.py makemigrations

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

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

    在此之后执行命令

    python manager.py migrate

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

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

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

    python manage.py sqlmigrate webAppOne  0001

    D:\PycharmProjects\DemoDjango>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:\PycharmProjects\DemoDjango>

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

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

  • 相关阅读:
    diamond operator is not supported in -source 1.5
    ClassNotFoundException异常的解决方法
    serialVersionUID 的用途--转加自己的疑问
    java序列化---转
    junit类找不到的问题解决
    FastJson的基本用法----转
    sql字符串查找大小写敏感相关
    6.比较排序之快速排序
    有关ArrayList常用方法的源码解析
    5.比较排序之归并排序(非递归)
  • 原文地址:https://www.cnblogs.com/chen-villagehead/p/11359423.html
Copyright © 2020-2023  润新知