我在SQLAlchemy中链接了各种模型(有很多,属于等等).有没有办法找到给定的实例相关模型?
就像是:
usersModelInstance.getRelatedTables() // This should provide an array or something with the related tables of users (orders, logins, posts, etc.).
Run Code Online (Sandbox Code Playgroud)
小智 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
)
Run Code Online (Sandbox Code Playgroud)
请注意,sa.orm.class_mapper(cls)如果当前没有实体实例的句柄,但只有映射的类,则可以使用该函数.
现在,在第一种需要相关表列表的情况下,执行以下操作:
related_tables = [prop.target for prop in relation_properties]
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,您可能需要相关映射类的列表,请执行以下操作:
related_classes = [prop.mapper.class_ for prop in relation_properties]
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助你入门.