我在数据库中有一些资源,这些资源继承了它们的子资源。当我查询一个资源时,我需要能够获取到继承的资源。我有一个名为path
的字段,我计划使用它。 path
始终包含与我们当前处理的资源相关的所有资源的完整路径。
例如:
+-----------------------------------------+
| id | res_id | path |
|-----------------------------------------|
| 1 | res_1 | res_1 |
| 2 | res_1.1 | res_1.res_1.1 |
| 3 | res_1.2 | res_1.res_1.2 |
| 4 | res_1.1.1 | res_1.res_1.1.res_1.1.1|
+-----------------------------------------+
如果我查询
res_1.1
,那么我也必须获取res_1
,因为它是res_1.1
的父级。如果我获取res_1.1.1
,那么我也必须获取行1和行2,因为它们包含在res_1.1.1
的路径中。希望能得到一些建议如何在Postgres中实现此功能。我还在使用sqlmodel
编写查询,如果这是重要信息,请告诉我。
编辑。抱歉介绍不够清晰,参数path
已经是sqlalchemy Ltree -field。希望这可以让事情变得更简单?
CREATE TABLE
脚本)和您使用的Postgres版本,以澄清。 - Erwin Brandstetter