Im Grunde laufe ich auf ein Problem, wo SQLAlchemy (Version 1.0.13) endet die Abfrage der Tabelle, die als Join geladen werden soll, separat, wenn ich versuche, auf alle zugreifen Attribut der anderen Tabelle durch die myrelationship
Beziehung.SQLAlchemy Abfrage zweimal mit einer verbundenen Beziehung
Die Beziehung ist wie folgt definiert:
myrelationship = db.relationship(
'MyChild',
uselist=False,
viewonly=True,
lazy='joined',
foreign_keys=[whatever_id],
primaryjoin=(whatever_id == MyChild.whatever_other_id)
)
Für die erste Abfrage, zum Beispiel session.query(MyParent).filter(...).first()
, es nicht korrekt abfragen und alle Spalten aus beiden Tabellen mit einem Join abrufen, die das gewünschte Verhalten ist.
Das Problem tritt auf, wenn ich versuche myparent.meta.whatever
zu tun, die SQLAlchemy Query MyChild
einzeln durch eine Auswahl macht statt die Daten erneut zu verwenden, die es von der ursprünglichen Abfrage erhalten (und verworfen) hat.
Kann jemand vorschlagen, was ich falsch gemacht habe und warum, obwohl tatsächlich die Join beim ersten Laden, es nicht zwischenspeichern oder irgendwo und lädt stattdessen die zweite Tabelle wieder durch eine separate Auswahl?
Nach mehr Forschung, fand heraus, dass dies tatsächlich beantwortet es: http://StackOverflow.com/Questions/14898379/proper-way-to-prevent-sqlalchemy-from-r-running-queries-on-expired-Objects –