6

我有一个 sqlalchemy 类R,它实现了另外两个类之间的 am:n 关系AB. 所以R有两个整数列source_idtarget_id其中包含引用实例的 id。并且R有两个属性source_objtarget_obj它们是通过relationship. 它或多或少与文档中描述相同。

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

任何帮助将不胜感激!我如何得到AB来自R

4

2 回答 2

4

尝试这样的事情。我也在处理这个并且找不到任何文档,认为这可以帮助你开始。

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)
于 2013-05-08T02:34:50.237 回答
0

我花了一天的大部分时间来解决同样的问题,并且我能够编写一个列表理解,它接收一个表,然后吐出一个通过关系或外键连接的表名列表。您需要将该字符串转换为对实际类的引用,否则它工作得很好。

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

通过删除.split('.')[0],您可以获得连接引用的实际列的列表。理解很丑陋,但它有效。希望这可以帮助其他正在寻找与我相同的东西的人!

于 2013-07-29T23:23:58.320 回答