flask_migrate英文文檔翻譯
Flask
Flask-Migrate是用於使用Alembic處理Flask應用程序的SQLAlchemy數據庫遷移的擴展。可通過Flask命令行界面或Flask-Script擴展名使用數據庫操作。
爲什麼直接使用Flask-Migrate與Alembic?
Flask-Migrate是一個擴展,它以正確的方式配置Alembic以與Flask和Flask-SQLAlchemy應用程序一起使用。就實際的數據庫遷移而言,一切都由Alembic處理,因此您可以獲得完全相同的功能。
Installation
用pip安裝Flask-Migrate :
pip install Flask-Migrate
Example
這是一個通過Flask-Migrate處理數據庫遷移的示例應用程序:
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False //這裏是自己加上的爲了去掉警告部分
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
使用上述應用程序,您可以使用以下命令創建遷移存儲庫:
$ flask db init
這會將一個遷移文件夾添加到您的應用程序。該文件夾的內容需要與其他源文件一起添加到版本控制中。
然後,您可以生成初始遷移:
$ flask db migrate
遷移腳本需要進行檢查和編輯,因爲Alembic當前無法檢測到您對模型所做的每項更改。特別是,Alembic當前無法檢測表名稱更改,列名稱更改或匿名命名的約束。限制的詳細摘要可在Alembic自動生成文檔中找到。完成後,還需要將遷移腳本添加到版本控制中。
然後,您可以將遷移應用於數據庫:
$ flask db upgrade
然後,每次數據庫模型更改時,重複migrate和upgrade命令。
要在另一個系統中同步數據庫,只需從源代碼管理中刷新遷移文件夾並運行upgrade命令。
要查看所有可用命令,請運行以下命令:
$ flask db --help
請注意,必須按照命令行腳本的FLASK_APP要求,在環境變量中設置應用程序腳本,以上所有命令才能起作用flask。
使用Flask- Script
Flask-Migrate還支持Flask-Script命令行界面。這是一個示例應用程序,通過Flask-Script公開了所有數據庫遷移命令:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
manager = Manager(app)
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()
假設以上腳本存儲在名爲的文件中manage.py,則可以通過運行腳本來訪問所有數據庫遷移命令:
$ python manage.py db init
$ python manage.py db migrate
$ python manage.py db upgrade
$ python manage.py db --help
配置回調
有時,應用程序需要將自己的設置動態插入Alembic配置中。configure在讀取配置之後和使用配置之前,將調用以回調裝飾的函數。該功能可以修改配置對象,或將其替換爲其他對象。
@migrate.configure
def configure_alembic(config):
# modify config object
return config
多數據庫支持
Flask-Migrate可以與Flask-SQLAlchemy 的綁定功能集成在一起 ,從而可以跟蹤到與應用程序關聯的多個數據庫的遷移。
要創建多數據庫遷移存儲庫,請將–multidb參數添加到init命令中:
$ flask db init --multidb
使用此命令,將建立遷移存儲庫以跟蹤主數據庫以及SQLALCHEMY_BINDS配置選項中定義的任何其他數據庫上的遷移。