我有一个 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,这可能会使事情变得更加复杂。