Flask學習(六) - Flask-Script
Flask-Script
學過Django的同學應該知道在Django裡面是通過python manage.py runserver這一系列的指令來完成對伺服器的啟動執行的,Flask-script就是仿照這一點來生成的,同樣需要建立一個manage.py,在裡面進行命令初始化
安裝
pip install flask-script
使用
首先需要建立manage.py檔案
- 如果你直接在主manage.py檔案裡面寫命令,那麼只需要在終端直接輸入python manage.py command_name
- 首先要引入當前的app(只是個名字,從主執行檔案呼叫),然後傳入給Manager物件,在建立命令函式時,注意上方有新增一個@manager.command的修飾器,最後在主函式裡執行即可
from flask_script import Manager from app import app manager = Manager(app) @manager.command def runserver(): print("it's running") if __name__ == '__main__': manager.run()
python manage.py runserver(這裡的runserver只是指令名字)

image.png
- 如果存在命令分離,比如將某一類的功能模組命令單獨開,則在執行時需要先在主檔案裡面引入,然後在終端先執行父命令再執行子命令,詳見後文示例
- 這裡新建一個db_script.py來處理資料庫方面的指令,因為最後會在主檔案中呼叫執行,所以這裡不用傳入app名字,直接生成Manager()物件即可
db_script.py
這裡簡單定義了兩個方法init 和 migrate,顯示兩條輸出語句
from flask_script importManager DBManager = Manager() @DBManager.command def init(): print("初始化") @DBManager.command def migrate(): print("資料遷移")
manage.py
- 在主檔案裡首先引入了剛才新建立的DBManager物件,然後用add_command方法建立新的執行命令並設定名字(這裡是db)
from flask_script import Manager from app import app from db_script import DBManager manager = Manager(app) @manager.command def runserver(): print("it's running") manager.add_command('db', DBManager) if __name__ == '__main__': manager.run()
執行
python manage.py db init或者python manage.py db migrate

image.png