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 repository 0001

大概是這個樣子的:


-- Create model Blog
--
CREATE TABLE `repository_blog` (`nid` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `title` varchar(64) NOT NULL, `site` varchar(32) NOT NULL UNIQUE, `theme` varchar(32
) NOT NULL);
--
-- Create model UserFans
--
CREATE TABLE `repository_userfans` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY);
--
-- Create model UserInfo
--
CREATE TABLE `repository_userinfo` (`nid` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `username` varchar(32) NOT NULL UNIQUE, `nickname` varchar(32) NOT NULL, `passwo
rd` varchar(32) NOT NULL, `email` varchar(254) NOT NULL UNIQUE, `avatar` varchar(100) NOT NULL, `create_time` datetime(6) NOT NULL);
--
-- Add field follower to userfans
--
ALTER TABLE `repository_userfans` ADD COLUMN `follower_id` bigint NOT NULL;
--
-- Add field user to userfans
--
ALTER TABLE `repository_userfans` ADD COLUMN `user_id` bigint NOT NULL;
--
-- Add field user to blog
--
ALTER TABLE `repository_blog` ADD COLUMN `user_id` bigint NOT NULL UNIQUE;
--
-- Alter unique_together for userfans (1 constraint(s))
--
ALTER TABLE `repository_userfans` ADD CONSTRAINT repository_userfans_user_id_follower_id_9056a485_uniq UNIQUE (`user_id`, `follower_id`);
ALTER TABLE `repository_userfans` ADD CONSTRAINT `repository_userfans_follower_id_efd980e9_fk_repositor` FOREIGN KEY (`follower_id`) REFERENCES `repository_userinfo`
(`nid`);
ALTER TABLE `repository_userfans` ADD CONSTRAINT `repository_userfans_user_id_9ce6b2c6_fk_repository_userinfo_nid` FOREIGN KEY (`user_id`) REFERENCES `repository_user
info` (`nid`);
ALTER TABLE `repository_blog` ADD CONSTRAINT `repository_blog_user_id_aade3363_fk_repository_userinfo_nid` FOREIGN KEY (`user_id`) REFERENCES `repository_userinfo` (`
nid`);
COMMIT;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM