1

我有一个 SQLAlchemy 表类,它定义了一个关联代理(通过 mixin),如下所示:

@declared_attr
def nationality_name(self):
    return association_proxy("nationality", "name")

我想使用 SQLAlchemy 检查方法获取此属性的名称。我尝试了以下方法:

for column in mapper.all_orm_descriptors:
    print(column.key)

但这给出了关联代理_AssociationProxy_nationality_4587917712的名称,而不是我实际给它的名称,即nationality_name. 我似乎找不到任何其他属性可以用来获取它实际给出的名称。

有没有办法通过 SQLAlchemy 检查获得这个名字?

有可能只dir在表类上使用,但这似乎相当脆弱(我必须过滤掉所有不是列名或关联代理的类的属性)。

在搜索 StackOverflow 时,我发现了这个问题,有人说“我通过获取代理的名称,然后使用 getattr 来解决它” - 但我不知道他们是如何得到这个名称的。可能他们没有使用 declare_attr,这可能会使事情变得更加复杂。

4

0 回答 0