在SQLAlchemy中获取相关模型

时间:2011-06-02 22:32:34

标签: python sqlalchemy

我在SQLAlchemy中链接了各种模型(有很多,属于等等)。有没有找到相关模型的方法?

类似的东西:

usersModelInstance.getRelatedTables() // This should provide an array or something with the related tables of users (orders, logins, posts, etc.).

1 个答案:

答案 0 :(得分:8)

我不确定你想要什么 - 表格列表或映射类列表?

在任何一种情况下,首先要为映射的对象构建一个属性列表:

# Import sqlalchemy so we can use it
import sqlalchemy as sa

# Rename the OP's object to `obj`
obj = usersModelInstance

# Build a list of only relationship properties
relation_properties = filter(
    lambda p: isinstance(p, sa.orm.properties.RelationshipProperty),
    sa.orm.object_mapper(obj).iterate_properties
)

请注意,如果不这样做,可以使用sa.orm.class_mapper(cls)功能 目前有一个实体实例的句柄,但只有一个映射类。

现在,在第一种需要相关列表的情况下,请执行以下操作:

related_tables = [prop.target for prop in relation_properties]

在第二种情况下,您可能需要相关映射类的列表, 做:

related_classes = [prop.mapper.class_ for prop in relation_properties]

希望这可以让你开始。