运行 Google App Engine 上的 Alembic 迁移
Run Alembic migrations on Google App Engine
我有一个使用 SQLAlchemy (Flask-SQLAlchemy) 和 Alembic (Flask-Migrate) 的 Flask 应用程序。 Google App Engine 上的应用 运行。我想使用 Google 云 SQL。
在我的机器上,我 运行 python manage.py db upgrade
到 运行 我对本地数据库的迁移。由于 GAE 不允许任意 shell 命令成为 运行,我如何 运行 迁移它?
您可以将 Google 云 SQL 实例的本地计算机 IP 列入白名单,然后 运行 本地计算机上的脚本。
- 将您本地计算机的 IP 列入白名单:https://console.cloud.google.com/sql/instances/INSTANCENAME/access-control/authorization?project=PROJECTNAME
- 创建用户:https://console.cloud.google.com/sql/instances/INSTANCENAME/access-control/users?project=PROJECTNAME
- 为实例分配外部 IP 地址:https://console.cloud.google.com/sql/instances/INSTANCENAME/access-control/ip?project=PROJECTNAME
- 使用以下 SQLAlchemy 连接 URI:
SQLALCHEMY_DATABASE_URI = 'mysql://user:pw@ip:3306/DBNAME'
- 请记住稍后释放 IP,因为您将按未使用的每小时收费
这只是您可以编写的代码运行,因此您可以创建一个管理端点来实现升级:
@app.route('/admin/dbupgrade')
def dbupgrade():
from flask_migrate import upgrade, Migrate
migrate = Migrate(app, db)
upgrade(directory=migrate.directory)
return 'migrated'
(例如,Dropwizard 通过 tasks 很好地满足了此类管理需求)
我有一个使用 SQLAlchemy (Flask-SQLAlchemy) 和 Alembic (Flask-Migrate) 的 Flask 应用程序。 Google App Engine 上的应用 运行。我想使用 Google 云 SQL。
在我的机器上,我 运行 python manage.py db upgrade
到 运行 我对本地数据库的迁移。由于 GAE 不允许任意 shell 命令成为 运行,我如何 运行 迁移它?
您可以将 Google 云 SQL 实例的本地计算机 IP 列入白名单,然后 运行 本地计算机上的脚本。
- 将您本地计算机的 IP 列入白名单:https://console.cloud.google.com/sql/instances/INSTANCENAME/access-control/authorization?project=PROJECTNAME
- 创建用户:https://console.cloud.google.com/sql/instances/INSTANCENAME/access-control/users?project=PROJECTNAME
- 为实例分配外部 IP 地址:https://console.cloud.google.com/sql/instances/INSTANCENAME/access-control/ip?project=PROJECTNAME
- 使用以下 SQLAlchemy 连接 URI:
SQLALCHEMY_DATABASE_URI = 'mysql://user:pw@ip:3306/DBNAME'
- 请记住稍后释放 IP,因为您将按未使用的每小时收费
这只是您可以编写的代码运行,因此您可以创建一个管理端点来实现升级:
@app.route('/admin/dbupgrade')
def dbupgrade():
from flask_migrate import upgrade, Migrate
migrate = Migrate(app, db)
upgrade(directory=migrate.directory)
return 'migrated'
(例如,Dropwizard 通过 tasks 很好地满足了此类管理需求)