2015-12-15 8 views
7

Mój projekt kolbę używa sqlalchemy_utils w niektórych jej definicji modelu, który powoduje błędy migracji, takich jak:Jak AUTOIMPORT moduł w migracji kolba-migrować

NameError: global name 'sqlalchemy_utils' is not defined 

powodu tego pakietu nie są importowane w plikach migracyjnych.

Chciałbym mieć migrację w kolbach/alembik autogenerować linie importujące ten pakiet do plików migracji, w jaki sposób mogę to osiągnąć?

Sprawdziłem alembic.ini i migracje/env.py - ale nie jest dla mnie oczywiste, co jest właściwe, a jeśli to w ogóle możliwe.

Odpowiedz

9

Najprostszym sposobem jest zmodyfikowanie szablonu w celu uwzględnienia tego importu.

script.py.mako:

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

Jeśli masz kilka modułów, które zapewniają typy niestandardowe, można wykorzystać strategię described in the docs. Utwórz moduł w projekcie, który importuje różne moduły, a następnie ustaw go jako przedrostek, którego powinien używać Alembic dla typów użytkowników.

/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

Istnieje również musi być jakiś sposób, aby zmodyfikować 'imports' zmienną przekazany do szablonu, ale nie można go znaleźć w tej chwili. – davidism