flask_migrate英文文檔翻譯

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配置選項中定義的任何其他數據庫上的遷移。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章