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