как получить имя обратной ссылки в sqlalchemy?

class User(Base):
    __tablename__ = 'users'

    addresses = relationship('Address', order_by='Address.id', backref='user')


class Address(Base):
    __tablename__ = 'addresses'

    user_id = Column(Integer, ForeignKey('users.id'))

В приведенном выше коде показана очень распространенная конфигурация «один ко многим» в SQLAlchemy.

Как я могу получить имя backref, которое является «пользователем» в классе User, из экземпляра Address? Как я могу узнать, что у меня есть атрибут с именем «адреса» в классе User, который указывает, что User имеет много адресов?

Я могу получить всю информацию о столбцах из атрибута __table__.columns, но похоже, что они также хранятся там.


person castiel    schedule 23.07.2013    source источник


Ответы (1)


мы пытаемся поощрять использование inspect() API новое в 0.8:

>>> from sqlalchemy import inspect
>>> inspect(User).attrs.keys()
['addresses', 'id']
>>> User.addresses.property.backref
'user'
person zzzeek    schedule 24.07.2013