天天看點

03Django初始化項目環境精講

作為應用(下面我們統稱 app)通常都會需要使用資料表來完成狀态或資料的儲存,Django 自帶的 app 也不例外。如果不同步這些應用的資料表到資料庫中,而是直接啟動項目,在 CMD 指令行就會列印警告資訊,并且告知如何解決這個警告資訊方法。如圖 1 所示:

03Django初始化項目環境精講

在圖1中,用紅色方框标注的的就是 Django 的警告資訊,告訴我們安裝在 INSTALLED_APPS 清單中應用如 admin、auth、session 等需要進行資料庫遷移。而且它還告訴我們如何進行遷移,就是使用如下指令來進行資料表的遷移:

python manage.py migrate

提示:“遷移”就是把 Django 預設自帶應用的資料表遷移到我們自己的建立的資料庫裡,有點像搬家的意思,migrate 這個單詞的含義就是“遷移”。

不過這裡暫時不要執行 python manage.py migrate 等到資料庫配置後在執行

在項目的 __init__.py 檔案中寫入

 如果沒有安裝 pymysql 執行 pip install pymysql 

 在settings.py中修改資料庫

将原來的替換為這個

  需要先去資料庫建立這個資料庫 不會自動建立資料庫d的

現在完成資料庫遷移 !執行

03Django初始化項目環境精講

檢視資料庫

03Django初始化項目環境精講

 這裡使用一個指令就完成了資料庫的遷移工作,但是有兩點問題值得我們思考,migrate 是怎麼知道要建立哪些表的,而且如果這些表修改了,它又怎樣去維護這些表與資料庫中已經遷移的表保持一緻呢?下面我們來解答這個疑惑。

Django 對于資料庫的遷移工作通過兩個指令來實作,一個就是我們上面介紹的 migrate 指令,另個指令如下所示:

python manage.py makemigrations

makemigrations 指令會檢測應用目錄下是否存在 migrations 目錄,如果沒有則進行建立。首先,會根據應用的表結構定義生成一個 0001_inital.py 檔案,裡面定義了資料表的結構。

當資料表更改後,我們首先執行 makemigrations 指令,然後 Django 會重新生成一個新的資料庫遷移檔案用來記錄表結構之間的差異,命名規則是對上一個遷移檔案的序列号加1,如 0002_xxx、0003_xxx。

之後,再次執行 migrate 指令讓新的遷移檔案生效并同步回資料庫,進而完成表結構定義的修改。對于 Django 内置的應用,資料庫遷移檔案已經生成好了,是以直接使用 migrate 指令即可。

是以在我們并沒有編寫資料庫内容直接使用migrate 

每一次資料表更改後,都需要執行下面的兩個指令,它們的執行順序如下所示:

python manag.py migrate

為了保證已經完成的遷移工作不會重複的執行,Django 會把每一次資料庫遷移記錄到 django_migrations 表中,每一次執行 migrate 指令前都會比較遷移檔案是否已經記錄在表中了,隻有沒出現過的才會執行。若想檢視目前項目的第一次 migrate 生成的遷移記錄,可以在 MySQL 指令行界面使用如下指令檢視 :

select * from django_migrations;

輸出結果如下所示: