Как узнать свойства таблицы из сопоставленного объекта SQLAlchemy - PullRequest
25 голосов
/ 14 марта 2010

У меня есть класс, сопоставленный с таблицей, в моем случае декларативным способом, и я хочу "открыть" свойства таблицы, столбцы, имена, отношения из этого класса:

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 Ответ

48 голосов
/ 15 марта 2010

Необходимую информацию вы можете получить из Таблица Объект:

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