2017-03-05 14 views
0

クエリオブジェクトの結果の処理が混乱しています。私はこの例では外部キーを使用していません。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() 

結果はデー​​タに関する限り正確です。ただし、個々の行のデータにアクセスしようとすると、問題が発生します。

人[0] .lastnameは期待通りに動作し、データを返します。

しかし、結果にperson.displaytextがありますが、私はdisplaytextエンティティのエイリアスを使用しているため、結果は1つだけです。私はなぜ結果が得られるのか理解していますが、2つの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を初めて使うので、これは「初心者」の問題です。

ありがとうございました。

答えて

0

申し訳ありません - RTFM問題 - されている必要があります:

lookuplocation.displaytext.label( "myfield1")、 lookupoccupation.displaytext.label( "myfield2")の結果がで参照フィールドを返された後

person.myfield

シンプルです。

関連する問題