【发布时间】:2017-03-08 11:04:33
【问题描述】:
对查询对象结果感到困惑。在这个例子中我没有使用外键。
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 列。
上述join生成的实际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
但这些“as”字段名称在结果中均不可用。
我是 SqlAlchemy 的新手,所以这很可能是一个“新手”问题。
谢谢。
【问题讨论】:
标签: python sqlalchemy