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.