2015-12-15 7 views
7

Mein Kolben Projekt verwendet sqlalchemy_utils in einigen seiner Modelldefinitionen, die wie Migrationsfehler verursacht:Wie Autoimport-Modul in Kolben-Migrate Migration

NameError: global name 'sqlalchemy_utils' is not defined 

aufgrund dieses Paket nicht in den Migrationsdateien importiert werden.

Ich möchte flask-migrate/alambic automatisch generieren die Zeilen dieses Paket in die Migrationsdateien importieren, wie erreiche ich dies?

Ich habe mir alembic.ini und migrations/env.py angeschaut - aber mir ist nicht klar, was der richtige Weg ist/wenn es überhaupt möglich ist.

Antwort

9

Die einfachste Möglichkeit besteht darin, die Vorlage so zu ändern, dass sie diesen Import enthält.

script.py.mako:

... 
from alembic import op 
import sqlalchemy as sa 
import sqlalchemy_utils 
${imports if imports else ''} 
... 

Wenn Sie mehrere Module haben, die benutzerdefinierte Typen bereitstellen, können Sie die Strategie described in the docs verwenden. Erstellen Sie ein Modul in Ihrem Projekt, das die verschiedenen Module importiert, und legen Sie das dann als Präfix fest, das Alembic für Benutzertypen verwenden soll.

/myapp/migration_types.py:

from sqlalchemy_utils import * 
from myapp.custom_model_type import MyType 

script.py.mako:

... 
from myapp import migration_types 
... 

env.py:

... 
def run_migrations_online(): 
    ... 
    context.configure(
     ... 
     user_module_prefix='migration_types.', 
     ... 
    ) 
... 
+0

Es muss auch ein Weg sein, um die 'imports' Variable an die Vorlage übergeben zu ändern, aber ich kann es im Moment nicht finden. – davidism