在Google App Engine上运行Alembic迁移

9

我有一个使用SQLAlchemy(Flask-SQLAlchemy)和Alembic(Flask-Migrate)的Flask应用程序,该应用程序在Google App Engine上运行。我想使用Google Cloud SQL。

在我的机器上,我运行python manage.py db upgrade来针对本地数据库运行迁移。由于GAE不允许运行任意shell命令,我如何在其上运行这些迁移呢?

3个回答

6

当你说“释放IP”时,你是指第一条子弹中的本地机器IP还是第三条子弹中外部IP的分配? - mrp

4

这只是可以运行的代码,因此您可以创建一个管理端点来实现升级:

@app.route('/admin/dbupgrade')
def dbupgrade():
    from flask_migrate import upgrade, Migrate
    migrate = Migrate(app, db)
    upgrade(directory=migrate.directory)
    return 'migrated'

(Dropwizard,例如,通过{{link1:tasks}}很好地满足这样的管理需求)

1
你可以为Google Cloud SQL实例设置本地机器的IP白名单,然后在本地机器上运行脚本。

这实际上是我最终采取的做法。然而,给SQL实例分配一个IPv4地址需要0.01美元/小时=7.2美元/月的成本。如果有一种自动获取地址、运行迁移,然后释放它的方法,我会很高兴。 - gberger
您可以使用 "gcloud sql instances patch --assign-ip" 和 "gcloud sql instances patch --no-assign-ip" 命令来分配或取消分配IP地址。 - Vadim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接