SqlAlchemy:检查/反映有关关系的信息

2024-04-25 19:09:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个sqlalchemy类R,它实现了另外两个类AB之间的m:n关系。因此R有两个整型列source_id和{},它们保存被引用实例的id。并且R有两个属性source_obj和{},它们是通过^{来定义的。它或多或少与文献中描述的here相同。在

我要做的是从R检索被引用的类。我使用的是sqlalchemy 0.8,并尝试在R.source_obj上使用inspect()方法,但我只得到了一个InstrumentedAttribute的方法,这似乎没有多大帮助。至少我无法提取任何有用的信息或找到任何有关它的文档。在

任何帮助都将不胜感激!如何从R获得{}和{}?在


Tags: 实例方法文档信息idobjsource属性
2条回答

试试这个。我也在处理这个问题,找不到任何文档,认为这可以帮助你开始。在

from sqlalchemy import inspect

i = inspect(model)
for relation in i.relationships:
    print(relation.direction.name)
    print(relation.remote_side)
    print(relation._reverse_property)
    dir(relation)

我花了一天的大部分时间来研究这个问题,我能够写出一个列表理解,它接受一个表,然后输出一个通过关系或外键连接的表名的列表。您需要将该字符串转换为对实际类的引用,否则它就可以正常工作了。在

relationship_list = [str(list(column.remote_side)[0]).split('.')[0] for column \
                    in inspect(table).relationships]

通过删除.split('.')[0],您可以获得连接所引用的实际列的列表。这种理解很难看,但它是有效的。希望这能帮助其他人谁是一样的东西,我是!在

相关问题 更多 >