引用官方文件的話,flask-migrate
是使用alembic
遷移flask應用程式的sqlalchemy
資料庫的擴充套件,可以通過flask命令列或者flask-script
擴充套件對資料庫進行操作。
該擴充套件主要用於遷移資料庫。傳統操作flask資料庫一般使用sqlalchemy
,表的初始化使用db.create_all
,這種方式建立表之前需要先將原來表刪除然後才能生成新的表結構。但是使用flask-migrate
則免去這些繁瑣的步驟。
第一次初始化資料庫分為建立模型 -> 建立遷移檔案 -> 建立表
三個步驟,分別對應init
、migrate
、upgrade
三個命令。之後表的增刪改則只需要後面兩個步驟。三個步驟執行的詳細內容如下,和git
操作很相似:
sudo pip install flask-migrate
沒有安裝flask
或者flask的flask-sqlalchemy
擴充套件,使用以下指令安裝:
sudo pip install flask
sudo pip install flask-sqlalchemy
引用官方的示例**:
# 注意:如果資料模型和操作函式不在同乙個檔案下,需要引用資料模型,否則不會建立
# 例如你的使用者模型在 models/user.py 中,需要在呼叫前增加下述類似**
from flask import flask
from flask_sqlalchemy import sqlalchemy
from flask_migrate import migrate
# 資料庫連線配置
# 'mysql+pymysql://root:《你的密碼》@《主機位址》/《資料庫名》?charset=utf8'
# 上述為博主使用的配置,使用的是mysql資料庫,使用前需要安裝pymysql,否則會報錯,安裝指令如下:
# sudo pip install pymysql
'sqlalchemy_database_uri']=
# 初始化資料庫
# 初始化flask-migrate擴充套件
# 示例資料庫模型
class
user
(db.model):id
= db.column(db.integer, primary_key=
true
) name = db.column(db.string(
128)
)
使用下述命令建立模型:
flask db init
接著是建立遷移檔案:
flask db migrate
最後是更新資料庫:
flask db upgrade
flask db --help
安裝flask-script
:
sudo pip install flask-script
from flask import flask
from flask_sqlalchemy import sqlalchemy
from flask_script import manager
from flask_migrate import migrate, migratecommand
# 注意替換成自己的資料庫連線方式
'sqlalchemy_database_uri']=
manager.add_command(
'db'
, migratecommand)
class
user
(db.model):id
= db.column(db.integer, primary_key=
true
) name = db.column(db.string(
128)
)if __name__ ==
'__main__'
: manager.run(
)
然後幾個操作步驟為:
python manage.py db init
python manage.py db migrate
python manage.py db upgrade
python manage.py db --help
flask-migrate
支援多資料庫,可以和flask-sqlalchemy
的繫結功能結合,從而可以跟蹤與應用程式關聯的多個資料庫的遷移。
建立支援多資料庫的儲存倉庫,需要在init
後增加--multidb
引數,示例命令如下:
flask db init --multidb
【參考鏈結】 flask擴充套件 flask script
flask scropt外掛程式 為在flask裡編寫額外的指令碼提供了支援。這包括執行乙個開發伺服器,乙個定製的python命令列,用於執行初始化資料庫 定時任務和其他屬於web應用之外的命令列任務的指令碼。1.安裝 pip install flask script2.建立並執行命令列 第一步需要...
Flask的請求擴充套件
from flask import flask,requestbefore request 用法def func print request 可以在請求來前對於request進行處理 如有有返回值且有after request相關函式他的返回值會接著執行after request相關函式 如果有多個...
flask之請求擴充套件
可以多個請求之前的函式 執行順序是誰在前面誰先執行 如果前面的before request有返回值,後面的都不會執行 基於它做使用者登入認證 def process request args,kwargs if request.path login return none user session....