1. 程式人生 > >【Django2.0】python manage.py makemigrations 和 python manage.py migrate的區別

【Django2.0】python manage.py makemigrations 和 python manage.py migrate的區別

   無論當我們第一次在models.py中建立類物件還是對類中的屬性進行修改,我們都會使用python manage.py makemigrations 和 python manage.py migrate 兩個命令,單純從這兩這個命令來看的話其實僅僅只是後面makemigrations和migrate的區別

  在models中第一次建立models類,如圖所示:

  

  下面使用python manage.py makemigrations 命令:

   

  紅線框中表示在blog應用目錄下的migations的檔案下多了一個001的檔案,我們來看看這個檔案中的具體內容是什麼:

  

這個檔案裡面的內容表示我們建立了一個Employee這個模型類,並且指出這個類的成員屬性id,name,以及他們的屬性,我們知道在models.py建立模型類,其中一個模型類對應的是一張資料表,來看看執行了剛剛的那條命令止之後資料庫中有沒有發生什麼變化,我們想要的資料表是不是已經建立好了,如下圖所示:


可以看到資料庫裡面並沒有我們想要建立的資料表,那剛剛那條命令具體執行了什麼語句,我們可以使用python manage.py sqlmugrate appname 檔名 進行檢視:


和0001檔案中的內容是一致的,下面開始執行python manage.py migrate,如下圖:


下面再看一下資料庫:

我們發下執行完指一條命令之後,我們所想要建立的資料表出現了,對應的欄位也出現了

   到這裡我們差不多就知道了,python manage.py makemigrations這個命令是記錄我們對models.py的所有改動,並且將這個改動遷移到migrations這個檔案下生成一個檔案例如:0001檔案,如果你接下來還要進行改動的話可能生成就是另外一個檔案不一定都是0001檔案,但是這個命令並沒有作用到資料庫,這個剛剛我們在上面的操作過程之後已經看到了,而當我們執行python manage.py migrate 命令時  這條命令的主要作用就是把這些改動作用到資料庫也就是執行migrations裡面新改動的遷移檔案更新資料庫,比如建立資料表,或者增加欄位屬性

   另外一個需要注意的是這兩個命令預設情況下是作用於全域性,也就是對所有最新更改的models或者migrations下面的遷移檔案進行對應的操作,如果要想僅僅對部分app進行作用的話  則執行如下命令:

python manage.py makemigrations appname,

python manage.py migrate appname,

如果要想精確到某一個遷移檔案則可以使用:

python manage.py migrate appname 檔名

相關推薦

Django2.0python manage.py makemigrations python manage.py migrate區別

   無論當我們第一次在models.py中建立類物件還是對類中的屬性進行修改,我們都會使用python manage.py makemigrations 和 python manage.py mig

python manage.py makemigrations python manage.py migrate

在你改動了 model.py的內容之後執行下面的命令: python manage.py makemigrations 相當於 在該app下建立 migrations目錄,並記錄下你所有的關於modes.py的改動, 比如0001_initial.py, 但是這個改動還沒有

Leetcode_總結53. 最大子序 - python

連結:https://leetcode-cn.com/problems/maximum-subarray/description/ Q: 給定一個整數陣列 nums ,找到一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。 示例: 輸入: [-2

SIGAI 4P計劃2.0免費來襲,給你一個深度學習python的機會

SIGAI 4P計劃一期啟動以來,收到了小夥伴們的熱烈反響。共1017人加入計劃學習,其中70%學生使用者,28%企業使用者。不少小夥伴希望加入,但由於人員和管理的限制,一期不再開放。 但是,SIGAI怎麼能辜負同學們一顆想天天向上的好學之心呢?在大家的殷殷期待下,SIGAI總結一期4P計劃經驗

Django2.0Django2.0教程02.入門儀式:Hello World 視訊學習筆記

進入到需要放置專案的路徑,使用如下命令建立專案: $ django-admin startproject mysite 這裡,mysite為專案名稱,也可以是其他的名字。進入到mysite目錄之後,可以看到目錄結構如下: . ├── mana

Django2.0Django2.0教程08.常用的模版標籤過濾器 視訊學習筆記

繼續搭建blog blog/views.py from django.shortcuts import render_to_response, get_object_or_404 from .models import Blog, BlogType d

Django2.0Django2.0教程14.優化分頁展示 視訊學習筆記

當前頁高亮 修改blog/templates/blog/blog_list.html: ... <ul class="pagination"> <li> {# 上一頁 #} {% if pa

Django2.0Django2.0教程04.使用模版顯示內容 視訊學習筆記

檢視文章頁面:唯一標示id article/migrations/0001_initial.py的內容如下: # Generated by Django 2.0.5 on 2018-05-11 06:54 from django.db import m

Django2.0教程09.模版巢狀

1、一個網站有很多相似的網頁,這樣就可以建立一個base.html在templates資料夾下 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"

Django2.0Django2.0教程13.分頁shell命令列模式 視訊學習筆記

快速新增博文:Shell命令列模式 $ python manage.py shell 匯入Blog模型: >>> from blog.models import Blog 驗證是否成功引用: >>&

Django2.0Django2.0教程11.CSS框架協助前端佈局 視訊學習筆記

將下載的bootstrap解壓並重命名為bootstrap-3.3.7,移動至static/下,這裡只用到css/bootstrap.min.css和css/bootstrap.min.css.map、js/bootstrap.min.js和全部font

51NOD-01011 最大公約數GCD

style lose gif lap blog %d 51nod ret display 【算法】歐幾裏德算法 #include<cstdio> int gcd(int a,int b) {return b==0?a:gcd(b,a%b);} int mai

51NOD-01018 排序

i++ logs closed img mes close for play class 【算法】排序 #include<cstdio> #include<algorithm> using namespace std; int n,a[50010

51NOD-01019 逆序數

+= open clas tdi for string d+ display algorithm 【算法】離散化+樹狀數組(求逆序對) 【題解】經典,原理是統計在i之前插入的且值≤i的個數,然後答案就是i-getsum(i) #include<cstdio>

51NOD-01106 質數檢測

scanf nbsp return span scan printf 技術分享 for == 【算法】數學 #include<cstdio> #include<cmath> bool ok(int x) { int m=(int)sqrt

51NOD-01118 機器人走方格

for space blog () algorithm cnblogs amp return closed 【算法】DP #include<cstdio> #include<algorithm> using namespace std; cons

51NOD-01089 最長回文子串 V2(Manacher算法)

lose 最長回文子串 gif () none print struct hide pac 【算法】回文樹 #include<cstdio> #include<algorithm> #include<cstring> using na

51NOD-01134 最長遞增子序列

子序列 can algorithm view hide 但是 open sin cst 【算法】動態規劃 【題解】經典模型:最長上升子序列(n log n) #include<cstdio> #include<algorithm> #includ

9.0對於java集合的叠代器的底層分析

trac print post turn pan 很難 分享 對象 nal 前言:如果對java的集合的遍歷(主要是HashMap中的keySet() 和 entrySet()是如何取值並且可以實現遍歷的)不是很明白的話,有興趣深入了解的小夥伴,本文可以作為一個參考,由於時

TP5.0model的操作方法

新增 src ted lse 圖片 希望 ace 復制代碼 推薦 //默認主鍵為自動識別,如果需要指定,可以設置屬性: namespace app\index\model; use think\Model; class User extends Model {