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

时间:2016-04-18 15:16:34

标签: python google-app-engine flask flask-migrate

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

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

1 个答案:

答案 0 :(得分:2)

是的,有一种方法可以运行它,虽然它不像你想的那么简单:

  1. 您需要configure your Google Cloud SQL,将自己添加为授权用户(输入您的IP地址)并请求拥有IPv4地址。视情况处理SSL。
  2. 使用脚本:
  3. 替换下面的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,因此您无需付费。

    3. 我非常赞赏其他答案:how to connect via SSLrun alembic migrations on GAE(其中可能是重复的)。