2010-03-14 9 views
22

Ho una classe mappata con una tabella, nel mio caso in modo dichiarativo, e voglio "scoprire" proprietà della tabella, colonne, nomi, relazioni, da questa classe:Come scoprire le proprietà della tabella dall'oggetto mappato SQLAlchemy

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) 

Così ora il mio obiettivo è dalla classe "Ship" per ottenere le colonne della tabella e le loro proprietà da un altro pezzo di codice. Immagino di poterlo affrontare usando la strumentazione ma esiste un modo fornito dall'API di SQLAlchemy?

+1

Vedere anche la domanda correlata su http://stackoverflow.com/q/2537471/25507 –

risposta

43

informazioni necessarie È possibile ottenere da Table oggetto:

  • Ship.__table__.columns vi fornirà informazioni colonne
  • Ship.__table__.foreign_keys elencherà le chiavi esterne
  • Ship.__table__.constraints, Ship.__table__.indexes sono altre proprietà che potrebbe risultare utile
+0

grazie per la risposta –

+0

C'è un modo per ottenere attributi dichiarati usando '@ tried_attr' nelle classi base nel corpo della classe stessa? Vorrei dichiarare la colonna usando la sequenza con il nome della sequenza creata in base al nome della tabella che è essa stessa definita in una classe base usando '@ tried_attr'. –

Problemi correlati