在执行 python manage.py magrations 时
django 会在相应的 app 的migration文件夹下面生成 一个python脚本文件 如下图:

在执行python manage.py migrate 时django才会生成数据库表,那么django是如何生成数据库表的呢,
django是根据migration下面的脚本文件来生成数据表的,每个migrations目录下有多个脚本,django是如何知道该执行哪个文件呢,django有一张django_migrations表,表中记录了已经执行的脚本,那么表中没有的就是还没执行的脚本,执行migrate命令的时候就只执行表中没有记录的那些脚本。


有时在执行migrate的时候如果发现没有生成相应的表,可以看看在django_migrations表中是否有脚本执行记录。可以删除django_migrations表中的记录和数据库中对应的表,然后重新执行即可。
网友评论