2012-06-30 11 views
10

Ho installato alembic 0.3.4, sqlalchemy, SQLite versione 3.7.4 e aggiornato SQLAlchemy 0.6.4 a SQLAlchemy 0.7 o versione successiva dalla mia ubuntu. Ho seguito le istruzioni: http://alembic.readthedocs.org/en/latest/tutorial.htmlRichiedere un semplice esempio di funzionamento alambicco per la generazione automatica di migrazioni

Ora sto testando: Auto Generazione Migrazioni ho creato un pacchetto: schemi, e un indicatore pacchetto sotto schemi: init .py con una linea definita:

__all__ = ["teacher"] 

ho anche creato un file di modulo: dbmodel.py nella directory schemi con tenore di

Base = declarative_base() 
class teacher(Base): 
     __tablename__ = 'teacher' 
     id = Column(Integer, primary_key=True) 
     name = Column(String) 
     department = Column(String) 

a wa y, ho creato un db sqlite, e sta funzionando bene per fare qualche test prima di Auto Generating Migrations. Ho configurato il file env.py. Ci sono due linee:

from schemas.dbmodel import Base 
target_metadata = Base.metadata 

Poi corro:

alembic revision --autogenerate -m "Added teacher table" 

ma ancora ottenere l'errore:

Traceback (most recent call last): 
File "/usr/local/bin/alembic", line 9, in <module> 
    load_entry_point('alembic==0.3.4', 'console_scripts', 'alembic')() 
    File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/config.py", line 229, in main 
    **dict((k, getattr(options, k)) for k in kwarg) 
    File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/command.py", line 93, in revision 
    script.run_env() 
    File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/script.py", line 188, in run_env 
    util.load_python_file(self.dir, 'env.py') 
    File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/util.py", line 185, in load_python_file 
    module = imp.load_source(module_id, path, open(path, 'rb')) 
    File "alembic/env.py", line 20, in <module> 
    from schemas.dbmodel import Base 
ImportError: No module named schemas.dbmodel 

non so perché è così difficile per me prova un semplice esempio con alambicco. Voglio solo importare il modello di dati dell'applicazione nel modello di database fisico. È così complicato? Grazie. Per favore qualcuno che conosca alambicco ci dia un semplice esempio passo dopo passo. Immagino che più persone ne trarranno beneficio.

+0

Quindi, dove nel codice è presente l'URL del database SQLite? Ho ottenuto questo per funzionare da un'applicazione piramidale esistente che utilizzava migrazioni sqlalchemy. Per farlo funzionare ho dovuto eseguire il bootstrap della connessione url/db come fa la piramide e quindi caricare il mio modello Base da lì. https://github.com/mitechie/Bookie/blob/develop/dbversions/env.py#L12 – Rick

+0

Nel file: alembic.ini, l'ho configurato e aggiunto una riga: sqlalchemy.url = sqlite: /// test This ha lavorato per migrare la modifica dello schema nel mio DB di test. – user1342336

risposta

20

Ho anche trovato che Alembic non è riuscito a trovare i moduli del mio modello. Per aggirare il problema, ho scoperto che, aggiungendo la seguente al mio env.py prima di importare i miei modelli, ho potuto costringerlo a lavorare:

import os, sys 
sys.path.append(os.getcwd()) 

Questo non è probabilmente la soluzione migliore, ma ha ottenuto Alambicco per autogenerare mie migrazioni .

+0

Grazie. Hai ragione, anche se il mio codice ha ancora qualche problema, almeno il percorso del modulo dati funziona bene ora. Mi hai risparmiato un sacco di tempo :) – user1342336

+1

Recentemente ho scoperto che dobbiamo configurare la variabile PYTHONMATH aggiungendo il percorso del modulo corrente. Funziona. – user1342336

+0

Ero di fronte a un problema simile e ora funziona .. Ecco la domanda e la risposta che ha risolto il mio problema http://stackoverflow.com/questions/15038036/integrating-alembic-with-sqlalchemy –