无法访问SQLAlchemy查询结果中的别名字段?
问题描述:
混淆处理查询对象的结果。在这个例子中,我没有使用外键。无法访问SQLAlchemy查询结果中的别名字段?
lookuplocation = aliased(ValuePair)
lookupoccupation = aliased(ValuePair)
persons = db.session.query(Person.lastname, lookuplocation.displaytext, lookupoccupation.displaytext).\
outerjoin(lookuplocation, Person.location == lookuplocation.valuepairid).\
outerjoin(lookupoccupation, Person.occupation1 == lookupoccupation.valuepairid).all()
就数据而言结果是正确的。但是,当我尝试访问单行数据时,我遇到了一个问题:
persons [0] .lastname按我的预期工作并返回数据。
但是,结果中有一个person.displaytext,但由于我使用了displaytext实体的别名,我只得到一个结果。我明白为什么我会得到结果,但我需要知道用什么别名字段名来获取两个displaytext列。
通过上述产生的实际的SQL语句加入如下:
SELECT person.lastname AS person_lastname, valuepair_1.displaytext AS valuepair_1_displaytext, valuepair_2.displaytext AS valuepair_2_displaytext
FROM person LEFT OUTER JOIN valuepair AS valuepair_1 ON person.location = valuepair_1.valuepairid LEFT OUTER JOIN valuepair AS valuepair_2 ON person.occupation1 = valuepair_2.valuepairid
但是,这些“作为”字段名的结果提供给我。
我是SqlAlchemy的新手,所以很可能这是一个“新手”问题。
感谢。
答
对不起 - RTFM问题 - 应该是:
lookuplocation.displaytext.label( “myfield1”), lookupoccupation.displaytext.label( “myfield2”)
结果返回参照场后person.myfield
简单。