web-dev-qa-db-ja.com

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によって提供される方法はありますか?

27

テーブル オブジェクトから取得できる必要な情報:

  • Ship.__table__.columns列情報を提供します
  • Ship.__table__.foreign_keys外部キーを一覧表示します
  • Ship.__table__.constraintsShip.__table__.indexesあなたが役に立つと思うかもしれない他のプロパティです
51
van