クエリオブジェクトの結果の処理が混乱しています。私はこの例では外部キーを使用していません。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を初めて使うので、これは「初心者」の問題です。
ありがとうございました。