1

自从我搬到 Google App Engine 后,我无法运行 Flask-Migrate 命令python manage.py db migrate,因为我对一些与 GAE 相关的导入有异常(No module named google.appengine.ext例如)。

有没有办法运行这个或替代方法来升级我在 GAE 上的数据库?

4

1 回答 1

4

是的,有一种方法可以运行它,尽管它不像您希望的那样简单。

  1. 您需要配置您的 Google Cloud SQL,将自己添加为授权用户(通过输入您的 IP 地址)并请求拥有 IPv4 地址。酌情处理 SSL。
  2. 使用脚本:

替换user, password, instance_id, db_name, 及path以下

# migrate_prod.py
DB_MIGRATION_URI = "mysql+mysqldb://user:password@instance_id/db_name?ssl_key=path/client-key.pem&ssl_cert=path/client-cert.pem&&ssl_ca=path/server-ca.pem"

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from models import *   # not needed if migration file is already generated

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = DB_MIGRATION_URI
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
migrate = Migrate(app, db)

manager = Manager(app)
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
    manager.run()
  1. 像在本地迁移一样运行脚本:python migrate_prod.py db upgrade假设您的迁移文件已经存在。

  2. 释放 IPv4,这样您就无需为此付费。

我非常感谢其他答案:如何通过 SSL 连接在 GAE 上运行 alembic 迁移(这可能是重复的)。

于 2016-05-08T11:14:02.300 回答