小编Dan*_*ele的帖子

SQLAlchemy简单递归cte查询

我有以下 SQLAlchemy 表:

\n\n\n\n
from sqlalchemy.ext.declarative import declarative_base\n\nBase = declarative_base()\n\nclass NetworkLink(Base):\n    """Network immediate link between a franchisee and his franchisor\n\n    """\n    __tablename__ = \'network_link\'\n\n    id_franchisee = Column(Integer, ForeignKey(\'user.id\'), primary_key=True)\n    id_franchisor = Column(Integer, ForeignKey(\'user.id\'))\n
Run Code Online (Sandbox Code Playgroud)\n\n

它基本上代表了一个树状的网络结构。

\n\n

给定特许人的 id,我需要获取整个子树中所有后代的 id。\n例如,如果表如下:

\n\n
id_franchisor | id_franchisee \n1 | 2\n1 | 3\n2 | 4\n2 | 5\n4 | 6\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后给定 id 1 我需要 1,2,3,4,5,6,而给定 2 我需要 2,4,5,6。

\n\n

我知道这不是解决此问题的最有效的表表示形式,但此操作将很少执行,并且插入将更加常见。

\n\n

我正在尝试使用递归查询来实现此功能,如下所示:

\n\n
"""\nWITH RECURSIVE recursive_franchisee(id) AS\n(\n    SELECT %s\n    UNION ALL\n    SELECT L.id_franchisee\n    FROM recursive_franchisee …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy recursive-query common-table-expression

6
推荐指数
0
解决办法
8708
查看次数