假设我有一个Thing
类,它与其他一些类相关,Foo
和Bar
。
class Thing(Base):
FooKey = Column('FooKey', Integer,
ForeignKey('FooTable.FooKey'), primary_key=True)
BarKey = Column('BarKey', Integer, ForeignKey('BarTable.BarKey'), primary_key=True)
foo = db.relationship('Foo')
bar = db.relationship('Bar')
我想得到与我的
Thing
创建的relationships()
相关的类/表的列表,例如[Foo, Bar]
。有办法吗?这是一个密切相关的问题:
SQLAlchemy, Flask: get relationships from a db.Model。它标识关系的字符串名称,但不标识目标类。
上下文:
我正在为SQL数据库的声明性基映射构建单元测试。很多开发工作都在进行中,我希望有可靠的检查。
最佳答案
如另一个问题所述,使用Mapper
可以让您走上正确的道路。正如在doc[0]中所提到的,您将得到一堆sqlalchemy.orm.relationships.RelationshipProperty
,然后您可以使用每个class_
关联的mapper
上的RelationshipProperty
来进入类:
from sqlalchemy.inspection import inspect
rels = inspect(Thing).relationships
clss = [rel.mapper.class_ for rel in rels]