Django 數據庫表生成與修改

manage.py腳本使用

manage.py是每個django項目中自動生成的一個用於管理項目的腳本文件。需要通過python命令執行。manage.py接受的是Django提供的內置命令。

執行方式:python manage.py 內置命令

內置命令包含:

  • makemigrations:創建更改文件(數據庫)

  • migrate:將生成的py文件應用到數據庫(數據庫)

  • inspectdb:反向生成models文件

  • runserver:運行服務器:默認端口爲8000,默認localhost爲127.0.0.1

  • startapp appname:新建App

  • startproject projectname :新建Django project

更多命令使用:

python manage.py 可以看到詳細的列表,在忘記了名稱的時候特別有用

數據庫表正向生成

根據models文件自動創建數據庫表

python manage.py makemigrations
python manage.py migrate

makemigrations

作用:根據檢測到的模型創建新的遷移。遷移的作用,更多的是將數據庫的操作,以文件的形式記錄下來,方便以後檢查、調用、重做等等

執行命令後:相當於在該app下建立migrations目錄,並記錄下所有關於models.py的改動,比如0001_initial.py。(這個改動還沒有同步到數據庫)

 

migrate

作用:使數據庫狀態與當前模型集和遷移集同步。就是將對數據庫的更改,主要是數據表設計的更改,在數據庫中真實執行。例如,新建、修改、刪除數據表,新增、修改、刪除某數據表內的字段等等。

執行命令後:django是根據migrations下面的腳本文件來生成數據表,models中的修改會同步到數據庫

如何區分執行migrations下的哪個文件?

django有一張django_migrations表,表中記錄了已經執行的腳本,那麼表中沒有的就是還沒執行的腳本,執行migrate命令的時候就只執行表中沒有記錄的那些腳本。

 

注意:

1.注意執行過程中的報錯提示信息

2.有時在執行migrate的時候如果發現沒有生成相應的表,可以看看在django_migrations表中是否有腳本執行記錄。可以刪除django_migrations表中的記錄和數據庫中對應的表,然後重新執行即可。

 

數據庫表反向生成

根據已有的數據庫表自動生成models文件

python manage.py inspectdb     #默認數據庫
python manage.py inspectdb --database databasename  #制定數據庫

檢查DATABASE_NAME數據庫中的表併爲每個表打印模型類,修改managed = True,告訴django可以對數據庫進行操作

備註:python3不支持Mysqldb,但是框架在執行時默認使用的是MySQLdb,需要在app下的init文件增加下述命令

import pymysql
pymysql.install_as_MySQLdb()

 

參考:

https://www.cnblogs.com/yushengzhou/p/9609499.html

https://www.jianshu.com/p/8d3e76197496

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章