2017-03-05 1 views
0

Verwirrte Arbeit mit Abfrageobjektergebnissen. Ich verwende in diesem Beispiel keine Fremdschlüssel.Zugriff auf Alias-Felder in SQLAlchemy-Abfrageergebnissen nicht möglich?

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() 

Die Ergebnisse sind korrekt, soweit es die Daten betrifft. Wenn ich jedoch versuche, auf eine einzelne Datenzeile zuzugreifen, habe ich ein Problem:

Personen [0] .lastname funktioniert wie erwartet und gibt Daten zurück.

Allerdings gibt es einen person.displaytext im Ergebnis, aber da ich die displaytext -Entität mit einem Alias ​​versehen habe, bekomme ich nur ein Ergebnis. Ich verstehe, warum ich das Ergebnis bekomme, aber ich muss wissen, welche Alias-Feldnamen ich verwenden würde, um die zwei displaytext-Spalten zu erhalten.

Die tatsächliche SQL-Anweisung durch die oben generierten Join ist wie folgt:

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 

Aber keine dieser „als“ Feldnamen sind in den Ergebnissen mir zur Verfügung.

Ich bin neu bei SqlAlchemy, also ist dies wahrscheinlich ein "Neuling" Problem.

Danke.

Antwort

0

Sorry - RTFM Problem - hätte sein müssen:

lookuplocation.displaytext.label ("myfield1"), lookupoccupation.displaytext.label ("myfield2")

Nach Ergebnisse Referenzfeld zurückgegeben werden, mit person.myfield

Einfach.

Verwandte Themen