我有一个两个表的分层设置,其中表A引用表B,然后再引用回不同的记录在表A中,以此类推......但仅限于给定的递归深度。
我使用SQLAlchemy和declarative使其正常工作。我还成功地使用了懒加载,其中包括表关系上的lazy和join_depth属性。这是根据SQLAlchemy documentation。
然而,这种安排在程序加载时将递归深度固定为'join_depth'...但是,对于我正在使用的数据,我知道每次应该使用递归深度。如何在每个查询基础上更改使用的递归深度?
我考虑过在基本ORM对象上调整主要的join_depth属性,但这行不通,因为我有一个多线程的scoped_session应用程序,那样做很危险(更不用说在运行时在SQLAlchemy中定位该参数非常困难!)。
我也尝试使用查询中的
我也知道一些数据库支持的'
我使用SQLAlchemy和declarative使其正常工作。我还成功地使用了懒加载,其中包括表关系上的lazy和join_depth属性。这是根据SQLAlchemy documentation。
然而,这种安排在程序加载时将递归深度固定为'join_depth'...但是,对于我正在使用的数据,我知道每次应该使用递归深度。如何在每个查询基础上更改使用的递归深度?
我考虑过在基本ORM对象上调整主要的join_depth属性,但这行不通,因为我有一个多线程的scoped_session应用程序,那样做很危险(更不用说在运行时在SQLAlchemy中定位该参数非常困难!)。
我也尝试使用查询中的
joinedload
,但是不知道如何改变其深度。我也知道一些数据库支持的'
WITH RECURSIVE
' SQL语法,可以通过CTEs实现,但是由于某些数据库仍不支持它(SQLAlchemy目前也不支持它,至少没有经过很多方言定制),所以我想暂时避免使用它。