Python SQLAlchemy的递归查询

Python SQLAlchemy的递归查询,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我在尝试使用SQLAlchemy进行递归查询时遇到问题。我在所有我找到的网站上搜索和再搜索,但是我找不到我需要的东西 我想要的是: 我有两个具有关系的表(在这种情况下不需要第三个表): 我想得到一个容器中包含的所有项目。第一个容器可以有子容器,也可以没有子容器(字段可以为null),但如果容器有子容器,我需要再次对表1进行子查询,将子容器ID作为容器ID 我对Oracle的了解: 我在SQLAlchemy上的尝试: 我遇到了很多数据库错误,比如“在使用查询执行递归时检测到循环”,但最近的一次是

我在尝试使用SQLAlchemy进行递归查询时遇到问题。我在所有我找到的网站上搜索和再搜索,但是我找不到我需要的东西

我想要的是: 我有两个具有关系的表(在这种情况下不需要第三个表):

我想得到一个容器中包含的所有项目。第一个容器可以有子容器,也可以没有子容器(字段可以为null),但如果容器有子容器,我需要再次对表1进行子查询,将子容器ID作为容器ID

我对Oracle的了解: 我在SQLAlchemy上的尝试: 我遇到了很多数据库错误,比如“在使用查询执行递归时检测到循环”,但最近的一次是在那次尝试中:

table1CTE = table1.query.with_entities(table1.id).\
    filter(table1.id == 19076).\
    cte(name='table1', recursive=True)

a = aliased(table1CTE, name="sb")
b = aliased(table2, name="bi")

joined = table2.query.with_entities(table2.containerid).\
    filter(a.c.id == b.subcontainerid)

cte = a.union(joined)

table2.query.with_entities(table2.id, table2.containerid, table2.iditem).\
    select_entity_from(cte).\
    all()
但这会返回表1中的所有字段…所以这不是我需要的


我知道这个问题有点难理解,所以如果您需要一些让它更容易理解的东西,请告诉我。

您看过这里吗?首先,感谢您的回复@Fian我读过了,但我看不出如何使用它进行递归查询。请您用Python提供实际的模型/表定义,而不是模式的图像,好吗?或者,如果您正在进行反射,那么SQL模式定义。这不是一件大事,因为表很简单,但仍然是。
idcontainer
in
START WITH idcontainer in
看起来像一个打字错误。是吗?@IljaEverilä是的,这是个打字错误,谢谢你告诉我。我编辑了这个问题。关于模型,我在反思,我不能展示模式定义,因为我有一个关于它的隐私协议,但我认为这种关系就像你在图中看到的那样简单。
table1CTE = table1.query.with_entities(table1.id).\
    filter(table1.id == 19076).\
    cte(name='table1', recursive=True)

a = aliased(table1CTE, name="sb")
b = aliased(table2, name="bi")

joined = table2.query.with_entities(table2.containerid).\
    filter(a.c.id == b.subcontainerid)

cte = a.union(joined)

table2.query.with_entities(table2.id, table2.containerid, table2.iditem).\
    select_entity_from(cte).\
    all()