【发布时间】:2012-03-08 23:24:27
【问题描述】:
我想在一个 SQL 表中有多个链表,使用 MySQL 和 SQLAlchemy (0.7)。所有列表的第一个节点,父节点为 0,子节点为 0。id 代表列表,而不是独立元素。元素由PK标识
如果有一些省略的语法(与问题无关),它应该看起来像这样:
id(INT, PK)
content (TEXT)
parent(INT, FK(id), PK)
child(INT, FK(id), PK)
由于表有多个链表,我如何从数据库中返回整个列表,我选择一个特定的 ID 并且父级为 0?
例如:
SELECT * FROM ... WHERE id = 3 AND parent = 0
【问题讨论】:
-
我不明白。
id是一个特定链表的唯一标识符,还是一个特定元素的唯一标识符?你想提取什么:列表的所有元素?还是列表中的所有元素按正确顺序? -
元素是唯一的,我将更新问题以反映这一点。
-
回顾;这是个坏主意,所以 ID 标识了整个列表。
-
对,然后提取整个列表很简单,不是吗?你只是做
SELECT * FROM table WHERE id = 3;,不是吗?这会给你随机顺序的元素。不过,将它们整理好会更加困难。我想这将涉及为每个元素发出一个 SQL 查询,每次将id设置为包含前一个元素的child字段。 -
你提出了一个很好的观点,我可以
SELECT * FROM table WHERE...把它放在一个字典中,然后递归地遍历它。那么项目的顺序就无关紧要了。
标签: python mysql sqlalchemy linked-list