如何将 Flask-Migrate 与 Google App Engine 一起使用?

How to use Flask-Migrate with Google App Engine?

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

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

是的,有一种方法可以 运行 它,尽管它并不像您想要的那么简单。

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

替换下面的userpasswordinstance_iddb_namepath

# 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,这样您就不会为此付费。

我非常相信其他答案:how to connect via SSL and (这可能是重复的)。