Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 嵌套集模型还是表示层次结构的其他模型?_Python_Xml_Hierarchical Data_Nested Sets_Flat - Fatal编程技术网

Python 嵌套集模型还是表示层次结构的其他模型?

Python 嵌套集模型还是表示层次结构的其他模型?,python,xml,hierarchical-data,nested-sets,flat,Python,Xml,Hierarchical Data,Nested Sets,Flat,我有一个项目,我希望将层次信息(特别是类别和子类别)存储在基本上是一个平面数据库系统(简而言之,它是XML记录的集合)中。我想在系统中存储有关类别和子类别的信息: 动物 无脊椎动物 脊椎动物 天气 建筑物 摩天大楼 历史建筑 …等等 无论好坏,系统中的所有内容都存储为XML记录;这就是存储系统的工作方式 这意味着系统中的每个类别也存储为XML记录,如下所示: <record id="12345"> <attribute name="Skyscrapers" /

我有一个项目,我希望将层次信息(特别是类别和子类别)存储在基本上是一个平面数据库系统(简而言之,它是XML记录的集合)中。我想在系统中存储有关类别和子类别的信息:

  • 动物
    • 无脊椎动物
    • 脊椎动物
  • 天气
  • 建筑物
    • 摩天大楼
    • 历史建筑
…等等

无论好坏,系统中的所有内容都存储为XML记录;这就是存储系统的工作方式

这意味着系统中的每个类别也存储为XML记录,如下所示:

<record id="12345">
   <attribute name="Skyscrapers" />
   <attribute type="Category" />
</record>

. 在这种情况下,这似乎不是一个好的选择,因为:

  • 每次插入项目时,您 必须更改
    右侧
    和/或
    许多节点的值。 我无法对XML进行批量更新 文件,所以我必须更新每个文件 一个一个
  • 虽然有一些搜索功能可以让我按 “小于”或“大于”(所以我 理论上只能拉动 相关子节点或父节点 对于给定类别),我无法订购 XML按属性记录。所以 我得找回所有的东西 文档,将它们转换为 可以排序的对象列表 (在本例中使用Python)然后 使用
    lambda
    函数对它们进行排序
    由于我的数据存储模型与使用NoSQL存储数据没有太大区别,我想知道是否有人使用这种存储机制想出了处理和存储分层数据的好方法。

    不确定这对您的用例有多适用,但作为一种想法,也许使用它会有所帮助。也许它的默认分层表示形式足以满足您的需要。

    该类(基于)允许您使用平面关系数据库处理分层数据(支持PostgreSQL、MySQL和SQLite):


    您可以对类方法进行一些更改,以便这些更改也应用于您正在处理的XML文件。

    没有BeautifulSoup是关于解析HTML或XHTML的。它与处理、存储和组织分层数据有关。很抱歉,我误解了这个问题,我以为您在问如何在代码中表示数据,而不是持久化存储。对不起,我想我是糊涂了。我不认为MySQL、SQLite或PostgreSQL是“扁平”的数据库…我可以很容易地用任何一个嵌套的模型。对于这个用例,我需要在实际的平面数据库中工作的东西(想想散列键)。