Ich habe eine hierarchische Zwei-Tabellen-Konfiguration, wobei Tabelle A Tabelle B referenziert, die dann auf einen anderen Datensatz in Tabelle A verweist, und so weiter ... aber nur bis zu einer bestimmten Rekursionstiefe.Wie passt man die Rekursionstiefe für das eifrige Laden im SQLAlchemy ORM dynamisch an?
Ich habe das funktioniert gut mit SQLAlchemy und deklarativen. Ich benutze auch erfolgreich eifrig laden mit den lazy
und join_depth
Eigenschaften auf den Tabellenrelationen. Dies ist gemäß der SQLAlchemy documentation.
Allerdings legt diese Anordnung die Rekursionstiefe bei 'join_depth
' einmal zur Programmladezeit fest ... aber mit den Daten, die ich verwende, weiß ich die Rekursionstiefe, die ich jedes Mal verwenden sollte. Wie kann ich die verwendete Rekursionstiefe pro Abfrage ändern?
hielt ich habe mit dem Master join_depth
Eigenschaft auf der Basis ORM Objekt Hantieren, aber das wird nicht funktionieren, da ich eine Multi-Threaded scoped_session Anwendung haben, wo das gefährlich wäre (nicht die Tatsache zu erwähnen, dass Der Parameter ist in SQLAlchemy zur Laufzeit ziemlich schwer zu finden!).
Ich habe auch mit joinedload
mit der Abfrage betrachtet, aber sehe nicht, wie man die Tiefe damit variieren.
Ich bin mir auch der 'WITH RECURSIVE
' SQL-Syntax in einigen Datenbanken über CTEs bekannt, aber so groß wie es ist, möchte ich das im Moment vermeiden, da einige DBs es immer noch nicht unterstützen (und auch nicht tut SQLAlchemy - zumindest nicht im Moment und nicht ohne viel Dialektanpassung.