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

原文参考: https://www.cnblogs.com/qiangayz/p/9119873.html

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

python manger.py makemigrations

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

你可以手动打开这个文件,看看里面是什么

 

在此之后执行命令

python manager.py migrate

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

 

当makemigrations之后产生了0001_initial.py 文件,你可以查看下该migrations会对应于什么样子的SQL命令

python manage.py sqlmigrate appname 0001

大概是这个样子的:

BEGIN;
--
-- Create model OrderGoods
--
CREATE TABLE `tb_order_goods` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `create_time` datetime(6) NOT NULL, `update_time` datetime(6) NOT NULL, `count` integer NOT NULL, `price` numeric(10, 2) NOT NULL, `comment` longtext NOT NULL, `score` smallint NOT NULL, `is_anonymous` bool NOT NULL, `is_commented` bool NOT NULL);
--
-- Create model OrderInfo
--
CREATE TABLE `tb_order_info` (`create_time` datetime(6) NOT NULL, `update_time` datetime(6) NOT NULL, `order_id` varchar(64) NOT NULL PRIMARY KEY, `total_count` integer NOT NULL, `total_amount` numeric(10, 2) NOT NULL, `freight` numeric(10, 2) NOT NULL, `pay_method` smallint NOT NULL, `status` smallint NOT NULL, `address_id` integer NOT NULL, `user_id` integer NOT NULL);
--
-- Add field order to ordergoods
--
ALTER TABLE `tb_order_goods` ADD COLUMN `order_id` varchar(64) NOT NULL;
--
-- Add field sku to ordergoods
--
ALTER TABLE `tb_order_goods` ADD COLUMN `sku_id` integer NOT NULL;
ALTER TABLE `tb_order_info` ADD CONSTRAINT `tb_order_info_address_id_7e00bc8d_fk_tb_address_id` FOREIGN KEY (`address_id`) REFERENCES `tb_address` (`id`);
ALTER TABLE `tb_order_info` ADD CONSTRAINT `tb_order_info_user_id_e662f1ad_fk_tb_users_id` FOREIGN KEY (`user_id`) REFERENCES `tb_users` (`id`);
ALTER TABLE `tb_order_goods` ADD CONSTRAINT `tb_order_goods_order_id_3cce2d8f_fk_tb_order_info_order_id` FOREIGN KEY (`order_id`) REFERENCES `tb_order_info` (`order_id`);
ALTER TABLE `tb_order_goods` ADD CONSTRAINT `tb_order_goods_sku_id_e335e3b1_fk_tb_sku_id` FOREIGN KEY (`sku_id`) REFERENCES `tb_sku` (`id`);
COMMIT;

你可能感兴趣的:(makemigrations和migrate到底干了什么以及如何查询原生的sql语句)