2015-12-15 13 views
7

Il mio progetto pallone utilizza sqlalchemy_utils in alcune delle sue definizioni del modello, che provoca errori di migrazione come:Come Autoimport modulo nella migrazione pallone-migrate

NameError: global name 'sqlalchemy_utils' is not defined 

a causa di questo pacchetto non è importato i file di migrazione.

Mi piacerebbe avere la migrazione delle matrici/alambicco autogenerare le righe che importano questo pacchetto nei file di migrazione, come posso ottenere questo?

Ho visto alembic.ini e migrations/env.py - ma non è ovvio per me qual è il modo giusto/se è possibile a tutti.

risposta

9

Il modo più semplice è modificare il modello per includerlo.

script.py.mako:

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

Se si dispone di più moduli che forniscono tipi personalizzati, è possibile utilizzare la strategia described in the docs. Crea un modulo nel tuo progetto che importa i diversi moduli, quindi imposta come prefisso che Alembic dovrebbe utilizzare per i tipi di utente.

/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

Ci deve anche essere un modo per modificare la variabile 'imports' passata al template, ma io non riesco a trovarlo al momento – davidism

Problemi correlati