【问题标题】:SQLAlchemy; getting list of related tables/classesSQL炼金术;获取相关表/类的列表
【发布时间】:2015-11-23 15:48:17
【问题描述】:

假设我有一个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')

我想获取由我的relationships() 创建的与Thing 相关的类/表的列表,例如[Foo, Bar]。有什么办法吗?

这是一个密切相关的问题: SQLAlchemy, Flask: get relationships from a db.Model。这标识了关系的字符串名称,但不标识目标类。

上下文: 我正在为我的 SQL 数据库的声明性基础映射构建单元测试。大量的开发工作正在进行中,我希望进行可靠的检查。

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    使用Mapper 如其他问题中所述,您将走上正确的道路。如文档[0] 中所述,您将获得一堆sqlalchemy.orm.relationships.RelationshipProperty,然后您可以在与每个RelationshipProperty 关联的mapper 上使用class_ 来上课:

    from sqlalchemy.inspection import inspect
    rels = inspect(Thing).relationships
    clss = [rel.mapper.class_ for rel in rels]
    

    【讨论】:

    • 你明白了!所需要的只是来自 sqlalchemy.inspection import inspect rels = inspect(Thing).relationships clss = [rel.argument for rel in rels] 附加您的答案并错误地授予接受的答案
    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 2014-10-12
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2016-09-27
    相关资源
    最近更新 更多