自从我转移到Google App Engine后,我无法运行Flask-Migrate命令python manage.py db migrate
,因为我有一些关于GAE相关导入的例外情况(例如No module named google.appengine.ext
)。
有没有办法运行这个或替代方法来升级GAE上的数据库?
答案 0 :(得分:2)
是的,有一种方法可以运行它,虽然它不像你想的那么简单:
替换下面的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和run alembic migrations on GAE(其中可能是重复的)。