浅谈Django学习migrate和makemigrations的差别
本文主要研究的是Django中migrate和makemigrations的差别,具体如下。
在你改动了model.py的内容之后执行下面的命令:
Pythonmanger.pymakemigrations
相当于在该app下建立migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py,但是这个改动还没有作用到数据库文件
你可以手动打开这个文件,看看里面是什么
在此之后执行命令
pythonmanager.pymigrate
将该改动作用到数据库文件,比如产生table之类
当makemigrations之后产生了0001_initial.py文件,你可以查看下该migrations会对应于什么样子的SQL命令
pythonmanger.pysqlmigratetheapp0001
大概是这个样子的:
BEGIN;
CREATETABLE"polls_choice"(
"id"serialNOTNULLPRIMARYKEY,
"choice_text"varchar(200)NOTNULL,
"votes"integerNOTNULL
);
CREATETABLE"polls_question"(
"id"serialNOTNULLPRIMARYKEY,
"question_text"varchar(200)NOTNULL,
"pub_date"timestampwithtimezoneNOTNULL
);
ALTERTABLE"polls_choice"ADDCOLUMN"question_id"integerNOTNULL;
ALTERTABLE"polls_choice"ALTERCOLUMN"question_id"DROPDEFAULT;
CREATEINDEX"polls_choice_7aa0f6ee"ON"polls_choice"("question_id");
ALTERTABLE"polls_choice"
ADDCONSTRAINT"polls_choice_question_id_246c99a640fbbd72_fk_polls_question_id"
FOREIGNKEY("question_id")
REFERENCES"polls_question"("id")
DEFERRABLEINITIALLYDEFERRED;
COMMIT;
总结
以上就是本文关于浅谈Django学习migrate和makemigrations的差别的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!