2010-03-14 95 views
22

我有一個類與表映射,在我的情況下以聲明的方式,我想從這個類「發現」表屬性,列,名稱,關係:如何從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) 

所以現在我的目標是從「Ship」類中獲取表列和它們的屬性,從另一段代碼。我想我可以使用工具來處理它,但有沒有通過SQLAlchemy API提供的方法?

+1

另請參閱http://stackoverflow.com/q/2537471/25507上的相關問題 – 2010-12-20 04:09:47

回答

43

你需要,你可以從Table對象獲取信息:

  • Ship.__table__.columns將爲您提供列的信息
  • Ship.__table__.foreign_keys將列出外鍵
  • Ship.__table__.constraintsShip.__table__.indexes的其他屬性,你可能會發現有用
+0

感謝您的回答 – 2010-03-16 07:54:42

+0

有沒有一種方法可以在類本體的基類中使用'@ declared_attr'聲明屬性?我想使用序列來聲明列,該序列的名稱是基於表名使用'@ declared_attr'在基類中定義的名稱創建的。 – 2016-04-13 13:06:00

相關問題