Python Can Peewee+;sqlite是否进行递归CTE查询?
Peewee是否可以执行以下操作 代码创建一个表示树结构的自引用表,查询将查找一个元素的所有父元素。(我是SQL初学者,欢迎提出任何改进建议)Python Can Peewee+;sqlite是否进行递归CTE查询?,python,sqlite,peewee,Python,Sqlite,Peewee,Peewee是否可以执行以下操作 代码创建一个表示树结构的自引用表,查询将查找一个元素的所有父元素。(我是SQL初学者,欢迎提出任何改进建议) Peewee没有任何用于构造递归查询的内置工具。虽然可以使用一些SQL构建块类将其组合在一起,但老实说,您最好将整个SQL查询传递到peewee的raw()方法: 现在可以使用Peewee 3。 CREATE TABLE Parts ( Id INTEGER PRIMARY KEY, Desc TEXT, P
Peewee没有任何用于构造递归查询的内置工具。虽然可以使用一些SQL构建块类将其组合在一起,但老实说,您最好将整个SQL查询传递到peewee的
raw()
方法:
现在可以使用Peewee 3。
CREATE TABLE Parts (
Id INTEGER PRIMARY KEY,
Desc TEXT,
ParentId INTEGER
);
INSERT INTO Parts VALUES (1, 'CEO', NULL);
INSERT INTO Parts VALUES (2, 'VIP Sales', 1);
INSERT INTO Parts VALUES (3, 'VIP Operations', 1);
INSERT INTO Parts VALUES (4, 'Sales Manager Europe', 2);
INSERT INTO Parts VALUES (5, 'Sales Manager USA', 2);
INSERT INTO Parts VALUES (6, 'Sales Rep Europe 1', 4);
INSERT INTO Parts VALUES (7, 'Sales Rep Europe 2', 4);
INSERT INTO Parts VALUES (8, 'Sales Rep USA 1', 5);
INSERT INTO Parts VALUES (9, 'Sales Rep USA 2', 5);
WITH RECURSIVE Cte (
Level,
Id,
Desc,
ParentId,
ParentDesc
) AS (
SELECT 0,
Child.Id,
Child.Desc,
Parent.Id,
Parent.Desc
FROM Parts AS Child
JOIN Parts AS Parent ON Child.ParentId = Parent.Id
WHERE Child.Desc = 'Sales Rep USA 1'
UNION ALL
SELECT Cte.Level + 1,
Child.Id,
Child.Desc,
Parent.Id,
Parent.Desc
FROM Parts as Child, Cte
JOIN Parts AS Parent ON Child.ParentId = Parent.Id
WHERE Child.Id = Cte.ParentId
)
SELECT * FROM Cte;