Django 根據已有表生成ORM模型

2021-09-27 13:18:17 字數 1147 閱讀 7527

在實際開發中,有些時候可能資料庫已經存在了。如果我們用django來開發乙個** ,讀職的是之前已經存在的資料庫中的資料。

那麼該如何將模型與資料庫中的表對映呢?根據舊的資料庫生成對應的orm模型,需要以下幾個步驟:

1、django 給我們提供了乙個inspectdb的命令,可以非常方便的將已經存在的表,自動的生成模型。想要使用inspectab自動將

表生成模型。首先需要在settings.py 中配置好資料庫相關資訊不然就找不到資料庫。示例**如下:

databases = 

}

再通過python manage.py inspectdb就會將表轉換為模型後的**顯示在終端。

不過以上**只是顯示在終端,如果想要儲存到檔案,可以指定重定向檔案,比如輸出到 models.py 檔案中,需要執行:

python manage.py inspectdb > models.py

以上命令只能在終端中執行,不能在pycharm->tools->run manage.py task...中使用

如果只想要轉換乙個表生成模型,可以執行以下語句:python manage.py inspectdb table_name > models.py

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

4、將django的核心表對映到資料庫中: django中還有那些核心的表也是需要建立的。不然有些功能是用不了的。比如auth相關

表。如果過個資料庫之前就是使用django開發的,那麼這些表就已經存在了,可以不用管了。如果之前這個資料庫不是使用django開發的,那麼應該使用python manage.py migrate命令將django中的核心模型對映到資料庫中。

Django根據資料庫表反向生成Model

用過django的人應該都熟悉下面兩條命令 python manage.py make migrations 此時資料庫中還不會生效 既然有根據model自動生成資料庫表的命令,那麼肯定就有根據資料庫表反向生成model的命令 python manage.py inspectdb 使用這條命令,會根...

oracle根據已有表及資料建立表分割槽並匯入資料

假設情景 現有system.test表,資料量過千萬,處於ts test表空間中。表中有列a,將a 6與a小於6的資料進行分割槽 確保不會有外部程式修改需要建表分割槽的表 1.對需要重建表分割槽的表進行備份,匯出dmp,防止資料丟失 exp 使用者名稱 密碼 tns名 file c test.dmp...

django根據資料庫生成模型類

databases options test python manage.py inspectdbpython manage.py inspectdb 表名 models.py模型名 可根據自己需求進行修改 讓django管理模型 將meta下的managed false刪掉,如果保留這個,那麼以後...