Django學習 第十一講(上) ORM遷移命令

2021-10-24 17:19:32 字數 1737 閱讀 3024

要想執行命令,一定要進入到相應的專案目錄中再進行操作,否則會執行失敗

--name:給這個遷移指令碼指定乙個名字。

--empty:生成乙個空的遷移指令碼。如果你想寫自己的遷移指令碼,可以使用這個命令來實現乙個空的檔案,

然後自己再在檔案中寫遷移指令碼。

--fake:可以將指定的遷移指令碼名字新增到資料庫中。但是並不會把遷移指令碼轉換為sql語句,修改資料庫中的表。

--fake-initial:將第一次生成的遷移檔案版本號記錄在資料庫中。但並不會真正的執行遷移指令碼。

檢視某個遷移檔案在對映到資料庫中的時候,轉換的sql語句

python manage.py sqlmigrate book 0001_initial
以上方法如果不能修復,則需要刪除原有資料庫再重新做對映

在實際開發中,有些時候可能資料庫已經存在了。如果我們用django來開發乙個**,讀取的是之前已經存在的資料庫中的資料。那麼該如何將模型與資料庫中的表對映呢?根據舊的資料庫生成對應的orm模型,需要以下幾個步驟:

django給我們提供了乙個inspectdb的命令,可以非常方便的將已經存在的表,自動的生成模型。想要使用inspectdb自動將表生成模型。首先需要在settings.py中配置好資料庫相關資訊。不然就找不到資料庫。

databases = 

}python manage.py inspectdb > models.py

新生成的orm模型有些地方可能不太適合使用。比如模型的名字,表之間的關係等等

class article(models.model):

title = models.charfield(max_length=100, blank=true, null=true)

content = models.textfield(blank=true, null=true)

author = models.foreignkey('front.user', models.set_null, blank=true, null=true)

tags = models.manytomanyfield("tag",db_table='article_tag')

class meta:

db_table = 'article'

執行命令python manage.py makemigrations生成初始化的遷移指令碼。方便後面通過orm來管理表。這時候還需要執行命令python manage.py migrate --fake-initial,因為如果不使用–fake-initial,那麼會將遷移指令碼會對映到資料庫中。這時候遷移指令碼會新建立表,而這個表之前是已經存在了的,所以肯定會報錯。此時我們只要將這個0001-initial的狀態修改為已經對映,而不真正執行對映,下次再migrate的時候,就會忽略他。

將django的核心表對映到資料庫中:django中還有一些核心的表也是需要建立的。不然有些功能是用不了的。比如auth相關表。如果這個資料庫之前就是使用django開發的,那麼這些表就已經存在了。可以不用管了。如果之前這個資料庫不是使用django開發的,那麼應該使用migrate命令將django中的核心模型對映到資料庫中。

第十一講 過載

過載單目運算子 單目運算子只有乙個運算元 如 a,b,i,j 等 因此過載函式只有乙個引數,如果過載函式為成員函式,還可以省約此引數。例 將 過載成友元函式。單目運算子一般過載為成員函式 include class complex void show complex operator complex...

第十一講 資料清洗

資料採集完,要進行資料清洗工作,整個資料分析過程中,資料清洗工作幾乎要佔到80 的時間。資料清洗規則總結為四個關鍵點 完全合一 1 完整性 單條資料是否存在空值,統計的字段是否完善。2 全面性 觀察某一列的全部數值,比如平均值 最大值 最小值,根據常識判斷是否有問題。如 資料定義 單位標識 數值本身...

第十一講 if分支語句

1 if單分支 語法結構 if 條件 code.code.注 1,條件是表示式,不需要用括號括起來 2,條件的結束要有冒號 3,語句塊沒有花括號,而是由統一的縮進來實現 eg1 count 89 if count 80 條件是表示式,不需要用括號括起來 print larger then 80 eg...