2010-03-14 23 views
22

Tabloda eşlenmiş bir sınıf var, benim durumumda bir bildirimde bulunsun ve bu sınıftaki tablo özelliklerini, sütunları, adları, ilişkileri "keşfetmek" istiyorum:SQLAlchemy eşlemeli nesneden tablo özelliklerini nasıl bulurum?

engine = create_engine('sqlite:///' + databasePath, echo=True) 

# setting up root class for declarative declaration 
Base = declarative_base(bind=engine) 

class Ship(Base): 
    __tablename__ = 'ships' 

    id = Column(Integer, primary_key=True) 
    name = Column(String(255)) 

    def __init__(self, name): 
      self.name = name 

    def __repr__(self): 
      return "<Ship('%s')>" % (self.name) 

Şimdi hedefim, tablo sütunlarını ve özelliklerini başka bir kod parçasından almak için "Gemi" sınıfından. Sanırım enstrümantasyon ile başa çıkabilirim ama SQLAlchemy API'sı tarafından sağlanan herhangi bir yol var mı? Eğer Table nesneden alabilirsiniz ihtiyaç

+1

Ayrıca, http://stackoverflow.com/q/2537471/25507 adresindeki ilgili soruya da bakın. –

cevap

43

Bilgi:

  • Ship.__table__.columns
  • Ship.__table__.foreign_keys yabancı anahtarları
  • Ship.__table__.constraints, listeler kolonlar bilgi verecektir Ship.__table__.indexes size yararlı
  • bulabileceğiniz diğer özellikler vardır
+0

Cevabınız için teşekkür ederiz. –

+0

Sınıfın kendisinde bulunan temel derslerde 'declared_attr' kullanılarak bildirilen özniteliklerin alınmasının bir yolu var mı? '@ Declared_attr' kullanarak bir temel sınıfta tanımlanan tablo ismine dayanarak oluşturulan dizinin ismiyle diziyi kullanarak sütun belirtmek istiyorum. –