无法访问SQLAlchemy查询结果中的别名字段?

时间:2017-03-05 16:14:01

标签: python 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的新手,所以很可能这是一个"新手"问题。

感谢。

1 个答案:

答案 0 :(得分:0)

抱歉 - RTFM问题 - 应该是:

lookuplocation.displaytext.label( “myfield1”), lookupoccupation.displaytext.label( “myfield2”)

结果返回参考字段with person.myfield

简单。