2016-02-14 8 views
5

Ich habe eine Flask-Anwendung, die SQLAlchemy (Flask-SQLAlchemy) und Alembic (Flask-Migrate) verwendet. Die App wird in Google App Engine ausgeführt. Ich möchte Google Cloud SQL verwenden.Alembic-Migrationen auf Google App Engine ausführen

Auf meinem Computer starte ich python manage.py db upgrade, um meine Migrationen gegen meine lokale Datenbank auszuführen. Da GAE keine beliebigen Shell-Befehle ausführen kann, wie kann ich die Migrationen darauf ausführen?

Antwort

1
1

Sie können die IP-Adresse Ihres lokalen Computers für die Google Cloud SQL-Instanz auf die Whitelist setzen und dann das Skript auf Ihrem lokalen Computer ausführen.

+0

Diese ist eigentlich, was ich getan habe. Die Zuweisung einer IPV4-Adresse zur SQL-Instanz kostet jedoch 0,01 $/h = 7,2 $/mo. Wenn es eine Möglichkeit gäbe, die Adresse automatisch zu erhalten, die Migrationen auszuführen und dann freizugeben, wäre ich ein glücklicher Camper. – gberger

+0

Sie können gcloud sql instances patch --assign-ip, gcloud sql instances patch --no-assign verwenden -IP zum Zuweisen/Aufheben der Zuweisung einer IP-Adresse – Vadim

0

Es ist alles, was Sie können nur Code ausführen, so dass Sie mit dem ein Admin-Endpunkt erstellen können ein Upgrade bewirken:

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

(Dropwizard, zum Beispiel, bietet gut für solche Admin Dinge über tasks)