Как найти свойства таблицы из объекта сопоставления 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)

Итак, теперь моя цель - из класса "Корабль", чтобы получить столбцы таблицы и их свойства из другой части кода. Думаю, я могу справиться с этим с помощью инструментария, но есть ли способ, предоставляемый API SQLAlchemy?

Ответ 1

Необходимая информация, которую вы можете получить от Table object:

  • Ship.__table__.columns предоставит вам информацию о столбцах
  • Ship.__table__.foreign_keys отобразит внешние ключи
  • Ship.__table__.constraints, Ship.__table__.indexes - другие свойства, которые могут оказаться полезными