首頁 > 軟體

django如何根據現有資料庫表生成model詳解

2022-08-21 14:00:34

題記:django如果要並和原有的資料庫,那麼就需要把現有資料庫的表寫入model.py中。

一,在setting.py中設定好連線資料庫的引數

在setting中的DATABASESZ中設定預設引數,並在INSTALLED_APPS中匯入模組名。

DATABASES = {
    'default':
    {
        'ENGINE': 'django.db.backends.mysql',    # 資料庫引擎
        'NAME': 'jljupcs', # 資料庫名稱
        'HOST': '127.0.0.1', # 資料庫地址,本機 ip 地址 127.0.0.1
        'PORT': 3306, # 埠
        'USER': 'root',  # 資料庫使用者名稱
        'PASSWORD': '', # 資料庫密碼
    }
}
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'conversion',
]

在主專案目錄下匯入pymysql

import pymysql
pymysql.install_as_MySQLdb()

二,開啟cmd或pycharm的Terminal輸入命令

輸入命令:

python manage.py inspectdb > [專案路徑]/models.py

在cmd中輸入命令:

開啟pycharm終端輸入命令:

最後在models.py中自動建立了資料庫表對應的類。

三,managed = False 刪除或改為 managed = True

修改managed讓之後修改models即可對資料庫進行操作,在終端輸入:

python manage.py inspectdb

提示如果你想讓Django建立、修改和刪除表,請刪除’ managed = False '行

四,執行遷移

在終端輸入:

python manage.py makemigrations
python manage.py migrate

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

用過Django的人應該都熟悉下面兩條命令:

# 將Model的改動生成檔案
python manage.py make migrations  # 此時資料庫中還不會生效
# 提交改動
python manage.py migrate  # 此時資料庫就會自動生成我們Model對應的資料表了

上面兩條命令都是作用於全域性的,但是如果我們只想改動的app下面的Model或者某個檔案中的Model,那就需要指定appname和filename:

# 生成指定app下面的改動檔案
python manage.py makemigrations appname
# 提交指定app下面指定的改動檔案
python manage.py migrate appname filename

既然有根據Model自動生成資料庫表的命令,那麼肯定就有根據資料庫表反向生成Model的命令

python manage.py inspectdb  # 使用這條命令,會根據設定的資料庫中的表在自動生成對應的Model程式碼,並列印出來

當然也可以直接將列印的程式碼直接匯入到指定的Model檔案中

python manage.py inspectdb > student/models.py  # 前提是建立了app(student)並且在setting.py檔案中註冊過

設定了多個資料庫,則還可以設定資料庫別名來指定根據哪個庫中的表來生成Model

python manage.py inspectdb --database default >student/models.py  # default是預設的別名

將指定的表生成對應的Model

python manage.py inspectdb --database default table1 table2 >student/models.py

總結

到此這篇關於django如何根據現有資料庫表生成model的文章就介紹到這了,更多相關django生成model內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com