2012-06-30 28 views
10

Ben alembic 0.3.4, sqlalchemy, SQLite sürüm 3.7.4 yükledim ve SQLAlchemy 0.6.4'ü SQLBuchemy 0.7 veya daha yüksek bir değerle ubuntu'dan yükselttim. http://alembic.readthedocs.org/en/latest/tutorial.htmlOtomatik Oluşturma İşlemleri için basit bir alembic çalışma örneği isteğinde bulunun

Şimdi

test ediyorum: şemaları ve şemaları altında paket işaretleyici: init tanımlanan bir çizgiyle .py :

__all__ = ["teacher"] 
Oto Yaratma Göçler ben bir paket oluşturduk Ben talimat takip wa tarafından içeriğin altındaki

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

ile şemalar dizinde dbmodel.py:

Ben de bir modül dosyası oluşturduk y, Oluşturduğum bir sqlite db var ve o Otomatik Oluşturma Göçler önce bazı test yapmak için çalışıyor. Env.py dosyasını yapılandırdım. Orada iki satır eklendi:

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

rağmen hata olsun:

from schemas.dbmodel import Base 
target_metadata = Base.metadata 

Sonra çalıştırmak beni sınamak için bu kadar zor olmasının nedeni

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 

Bilmiyorum alembic kullanarak basit bir örnek. Uygulama veri modelimi fiziksel veritabanı modeline aktarmak istiyorum. Bu çok mu karmaşık? Teşekkürler. Lütfen alemik bilen biri bize adım adım basit bir exaple verir. Sanırım daha fazla insan bundan faydalanacak.

+0

Kodunuzda sqlite veritabanının URL'si nedir? Bunu, sqlalchemy-migrations kullanan bir piramit uygulamasından çalıştım. Bunun işe yaraması için, url/db bağlantısını piramit yapıp önyükleme yapmak zorunda kaldım ve oradan benim Model Tabanımımı yüklemek zorunda kaldım. https://github.com/mitechie/Bookie/blob/develop/dbversions/env.py#L12 – Rick

+0

Dosyada: alembic.ini, onu yapılandırdım ve bir satır ekledim: sqlalchemy.url = sqlite: /// test Bu şema değişiklikimi test DB'ye taşımak için çalıştı. – user1342336

cevap

20

Ayrıca Alembic'in model modüllerimi bulamadığını da buldum. Çözüm olarak, bunu, ben işe zorlamak olabilir Modellerimi aktarmadan önce benim env.py aşağıdaki ekleyerek bulundu:

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

Bu muhtemelen en iyi çözüm değildir, ama benim göçler autogenerate için alembic var .

+0

Teşekkürler. Haklısın, kodum hala bir sorun olsa da, en azından veri modülü yolu şimdi iyi çalışıyor. Bana çok zaman kazandırıyorsun :) – user1342336

+1

Son zamanlarda mevcut modül yolunu ekleyerek PYTHONMATH değişkenini yapılandırmamız gerektiğini öğrendim. İşe yarıyor. – user1342336

+0

Benzer bir sorunla karşılaşıyordum ve şimdi çalışıyor .. Sorunumu çözdüğüm soru ve cevap http://stackoverflow.com/questions/15038036/integrating-alembic-with-sqlalchemy –