如何通过all_orm_descriptors检查在SQLAlchemy中找到AssociationProxy Declaration_attr名称

问题描述

我有一个 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 检查得到这个名字?

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

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)