不管當咱們第一次在models.py中建立類對象仍是對類中的屬性進行修改,咱們都會使用python manage.py makemigrations 和 python manage.py migrate 兩個命令,單純從這兩這個命令來看的話其實僅僅只是後面makemigrations和migrate的區別python
在models中第一次建立models類,如圖所示:sql
下面使用python manage.py makemigrations 命令:數據庫
紅線框中表示在blog應用目錄下的migations的文件下多了一個001的文件,咱們來看看這個文件中的具體內容是什麼:app
這個文件裏面的內容表示咱們建立了一個Employee這個模型類,而且指出這個類的成員屬性id,name,以及他們的屬性,咱們知道在models.py建立模型類,其中一個模型類對應的是一張數據表,來看看執行了剛剛的那條命令止以後數據庫中有沒有發生什麼變化,咱們想要的數據表是否是已經建立好了,以下圖所示:.net
能夠看到數據庫裏面並無咱們想要建立的數據表,那剛剛那條命令具體執行了什麼語句,咱們可使用python manage.py sqlmugrate appname 文件名 進行查看:3d
和0001文件中的內容是一致的,下面開始執行python manage.py migrate,以下圖:code
下面再看一下數據庫:對象
咱們發下執行完指一條命令以後,咱們所想要建立的數據表出現了,對應的字段也出現了blog
到這裏咱們差很少就知道了,python manage.py makemigrations這個命令是記錄咱們對models.py的全部改動,而且將這個改動遷移到migrations這個文件下生成一個文件例如:0001文件,若是你接下來還要進行改動的話可能生成就是另一個文件不必定都是0001文件,可是這個命令並無做用到數據庫,這個剛剛咱們在上面的操做過程以後已經看到了,而當咱們執行python manage.py migrate 命令時 這條命令的主要做用就是把這些改動做用到數據庫也就是執行migrations裏面新改動的遷移文件更新數據庫,好比建立數據表,或者增長字段屬性get
另一個須要注意的是這兩個命令默認狀況下是做用於全局,也就是對全部最新更改的models或者migrations下面的遷移文件進行對應的操做,若是要想僅僅對部分app進行做用的話 則執行以下命令:
python manage.py makemigrations appname, python manage.py migrate appname,
若是要想精確到某一個遷移文件則可使用:
python manage.py migrate appname 文件名
轉自:https://blog.csdn.net/hpu_yly_bj/article/details/78928089