2010-03-14 98 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

相关问题