【问题标题】:Run Alembic migrations on Google App Engine在 Google App Engine 上运行 Alembic 迁移
【发布时间】:2016-05-25 06:52:00
【问题描述】:

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

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

【问题讨论】:

    标签: python google-app-engine flask google-cloud-sql alembic


    【解决方案1】:

    【讨论】:

    • 最后一个项目中的“释放IP”是指第一个项目中的本机IP还是第三个项目中分配的外部IP?
    【解决方案2】:

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

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

    (例如,Dropwizard 通过tasks 很好地满足了此类管理事务)

    【讨论】:

      【解决方案3】:

      您可以将 Google Cloud SQL 实例的本地计算机的 IP 列入白名单,然后在本地计算机上运行脚本。

      【讨论】:

      • 这实际上是我最终做的。但是,为 SQL 实例分配 IPV4 地址的成本为 0.01 美元/小时 = 7.2 美元/月。如果有办法自动获取地址,运行迁移,然后发布它,我会是一个快乐的露营者
      • 您可以使用 gcloud sql instances patch --assign-ip、gcloud sql instances patch --no-assign-ip 分配/取消分配 IP 地址
      猜你喜欢
      • 1970-01-01
      • 2017-05-17
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      相关资源
      最近更新 更多