1. 程式人生 > >makemigrations和migrate到底幹了什麼以及如何查詢原生的sql語句

makemigrations和migrate到底幹了什麼以及如何查詢原生的sql語句

在你改動了 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;