如何将 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 上的数据库?
是的,有一种方法可以 运行 它,尽管它并不像您想要的那么简单。
- 您需要 configure your Google Cloud SQL,将您自己添加为授权用户(通过输入您的 IP 地址)并申请一个 IPv4 地址。酌情处理 SSL。
- 使用脚本:
替换下面的user
、password
、instance_id
、db_name
和path
# 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()
运行 本地迁移脚本:python migrate_prod.py db upgrade
,假设您的迁移文件已经存在。
释放 IPv4,这样您就不会为此付费。
我非常相信其他答案:how to connect via SSL and (这可能是重复的)。
自从我转移到 Google App Engine 后,我无法 运行 Flask-Migrate 命令 python manage.py db migrate
因为我有一些与 GAE 相关的导入(例如 No module named google.appengine.ext
).
有没有办法运行这个或替代方案来升级我在 GAE 上的数据库?
是的,有一种方法可以 运行 它,尽管它并不像您想要的那么简单。
- 您需要 configure your Google Cloud SQL,将您自己添加为授权用户(通过输入您的 IP 地址)并申请一个 IPv4 地址。酌情处理 SSL。
- 使用脚本:
替换下面的user
、password
、instance_id
、db_name
和path
# 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()
运行 本地迁移脚本:
python migrate_prod.py db upgrade
,假设您的迁移文件已经存在。释放 IPv4,这样您就不会为此付费。
我非常相信其他答案:how to connect via SSL and