1. 程式人生 > >Flask-Script-Migrate

Flask-Script-Migrate

and cli ima sta 0.0.0.0 啟動命令 man add 5.1

Flask-Script 從字面意思上來看就是 Flask 的腳本

是的,熟悉Django的同學是否還記得Django的啟動命令呢? python manager.py runserver 大概是這樣對吧

其實Flask也可以做到,基於 Flask-Script 就可以了

1.安裝 Flask-Script

pip install Flask-Script

2.將 Flask-Script 加入到 Flask 項目中

技術分享圖片
 1 import MyApp
 2 # 導入 Flask-Script 中的 Manager
 3 from flask_script import
Manager 4 5 app = MyApp.create_app() 6 # 讓app支持 Manager 7 manager = Manager(app) 8 9 if __name__ == __main__: 10 #app.run() 11 # 替換原有的app.run(),然後大功告成了 12 manager.run()
MyApp/manager.py

3.使用命令啟動 Flask 項目

python manager.py runserver

技術分享圖片

4.啟動項目並更改配置參數(監聽IP地址,監聽端口)

python manager.py runserver -h 0.0.0.0 -p 9527

技術分享圖片

5.高級操作 - 自定制腳本命令

5.1.方式一 : @manager.command

技術分享圖片
 1 import MyApp
 2 # 導入 Flask-Script 中的 Manager
 3 from flask_script import Manager
 4 
 5 app = MyApp.create_app()
 6 # 讓app支持 Manager
 7 manager = Manager(app) # type:Manager
 8 
 9 @manager.command
10 def DragonFire(arg): 11 print(arg) 12 13 if __name__ == __main__: 14 #app.run() 15 # 替換原有的app.run(),然後大功告成了 16 manager.run()
MyApp/manager.py
python manager.py DragonFire 666

技術分享圖片

5.2.方式二 : @manager.opation("-短指令","--長指令",dest="變量名")

技術分享圖片
 1 import MyApp
 2 # 導入 Flask-Script 中的 Manager
 3 from flask_script import Manager
 4 
 5 app = MyApp.create_app()
 6 # 讓app支持 Manager
 7 manager = Manager(app) # type:Manager
 8 
 9 @manager.command
10 def DragonFire(arg):
11     print(arg)
12 
13 @manager.option("-n","--name",dest="name")
14 @manager.option("-s","--say",dest="say")
15 def talk(name,say):
16     print(f"{name}你可真{say}")
17 
18 if __name__ == __main__:
19     #app.run()
20     # 替換原有的app.run(),然後大功告成了
21     manager.run()
MyApp/manager.py
python manager.py talk -n 趙麗穎 -s 漂亮
python manager.py talk --name DragonFire --say NB-Class

技術分享圖片

Flask-Migrate

1.安裝 Flask-Migrate

pip install Flask-Migrate

2.將 Flask-Migrate 加入到 Flask 項目中 - PS: 註意了 Flask-Migrate 是要依賴 Flask-Script 組件的

技術分享圖片
復制代碼
 1 import MyApp
 2 # 導入 Flask-Script 中的 Manager
 3 from flask_script import Manager
 4 
 5 # 導入 Flask-Migrate 中的 Migrate 和 MigrateCommand
 6 # 這兩個東西說白了就是想在 Flask-Script 中添加幾個命令和指令而已
 7 from flask_migrate import Migrate,MigrateCommand
 8 
 9 app = MyApp.create_app()
10 # 讓app支持 Manager
11 manager = Manager(app) # type:Manager
12 
13 # Migrate 既然是數據庫遷移,那麽就得告訴他數據庫在哪裏
14 # 並且告訴他要支持那個app
15 Migrate(app,MyApp.db)
16 # 現在就要告訴manager 有新的指令了,這個新指令在MigrateCommand 中存著呢
17 manager.add_command("db",MigrateCommand) # 當你的命令中出現 db 指令,則去MigrateCommand中尋找對應關系
18 """
19 數據庫遷移指令:
20 python manager.py db init 
21 python manager.py db migrate   # Django中的 makemigration
22 python manager.py db upgrade  # Django中的 migrate
23 """
24 
25 
26 @manager.command
27 def DragonFire(arg):
28     print(arg)
29 
30 @manager.option("-n","--name",dest="name")
31 @manager.option("-s","--say",dest="say")
32 def talk(name,say):
33     print(f"{name}你可真{say}")
34 
35 if __name__ == __main__:
36     #app.run()
37     # 替換原有的app.run(),然後大功告成了
38     manager.run()
MyApp/manager.py

3.執行數據庫初始化指令

python manager.py db init

技術分享圖片

此時你會發現你的項目目錄中出現了一個好玩兒的東西

技術分享圖片

Flask-Script-Migrate