Flask第十八篇 Flask-Migrate

終於到了Flask-Migrate,以前在學習Flask-SQLAlchemy的時候,有的同窗就提過相似的問題,Flask支持 makemigration / migrate 嗎?html

答案在這裏該訴你,若是你同時擁有兩個三方組件 Flask-Script 和 Flask-Migrate 那麼就支持這樣的動做python

首先你要有幾個準備工做數據庫

第十七章的知識回顧flask

第十七章的項目下載app

 

1.安裝 Flask-Migrate

pip install Flask-Migrate

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

import MyApp
# 導入 Flask-Script 中的 Manager
from flask_script import Manager

# 導入 Flask-Migrate 中的 Migrate 和 MigrateCommand
# 這兩個東西說白了就是想在 Flask-Script 中添加幾個命令和指令而已
from flask_migrate import Migrate,MigrateCommand

app = MyApp.create_app()
# 讓app支持 Manager
manager = Manager(app) # type:Manager

# Migrate 既然是數據庫遷移,那麼就得告訴他數據庫在哪裏
# 而且告訴他要支持那個app
Migrate(app,MyApp.db)
# 如今就要告訴manager 有新的指令了,這個新指令在MigrateCommand 中存着呢
manager.add_command("db",MigrateCommand) # 當你的命令中出現 db 指令,則去MigrateCommand中尋找對應關係
"""
數據庫遷移指令:
python manager.py db init 
python manager.py db migrate   # Django中的 makemigration
python manager.py db upgrade  # Django中的 migrate
"""


@manager.command
def DragonFire(arg):
    print(arg)

@manager.option("-n","--name",dest="name")
@manager.option("-s","--say",dest="say")
def talk(name,say):
    print(f"{name}你可真{say}")

if __name__ == '__main__':
    #app.run()
    # 替換原有的app.run(),而後大功告成了
    manager.run()

MyApp/manager.py
View Code

 

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

python manager.py db init

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

接下來的操做就和Django中同樣了,在這裏就不作演示了學習

相關文章
相關標籤/搜索