假设我有一个Thing类,它与其他一些类相关,FooBar

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]

10-07 13:01
查看更多