Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 用于中小型分层数据结构的GUI工具和API_Python_User Interface_Data Structures_Hierarchical Data - Fatal编程技术网

Python 用于中小型分层数据结构的GUI工具和API

Python 用于中小型分层数据结构的GUI工具和API,python,user-interface,data-structures,hierarchical-data,Python,User Interface,Data Structures,Hierarchical Data,我正试图找到一个工具和库来编辑、写入和读取分层结构中的数据,类似于LDAP树、Windows注册表或Berkeley DB结构。 键应该表示某种层次结构,值应该具有相对灵活的格式(键入是可选的,但可能有用)。以下是一个例子: Items/item_1/shape = "rectangle" Items/item_1/top = 10 Items/item_1/left = 10 Items/item_1/width = 30 Items/item_1/height = 40 Items/ite

我正试图找到一个工具和库来编辑、写入和读取分层结构中的数据,类似于LDAP树、Windows注册表或Berkeley DB结构。 键应该表示某种层次结构,值应该具有相对灵活的格式(键入是可选的,但可能有用)。以下是一个例子:

Items/item_1/shape = "rectangle"
Items/item_1/top = 10
Items/item_1/left = 10
Items/item_1/width = 30
Items/item_1/height = 40

Items/item_2/shape = "square"
Items/item_2/top = 10
Items/item_2/left = 10
Items/item_2/width = 30

Items/item_3/shape = "circle"
Items/item_3/centre_x = 40
Items/item_3/centre_y = 50
Items/item_3/radius = 20
Items/item_3/colour = blue
用例将是:

  • 通过方便的GUI编辑数据存储。 这可能看起来像Windows Regedit或

  • 将该数据保存到某个存储中(例如文件)

  • 从另一个可以查询的应用程序加载此存储 它来自一个API。理想情况下,该库可以从Python调用

  • 我希望这些操作对于阅读来说是相当快的,但是不要提前将它们全部加载到内存中。数据存储将或多或少地手动更新到应用程序中,比读取数据的频率低得多。 能够从API中写入数据将是一个优势,但这不是一个严格的要求

    询问会很好。例如(在伪查询中),“List Items/*where top==10”将返回:

    • 项目/项目1
    • 项目/项目2
    易于编辑(通过良好的GUI)是最重要的功能之一

    我考虑了几个选择:

  • LDAP服务器可以满足大多数需求(特别是在Apache Directory Studio的帮助下)。然而,仅仅为此部署LDAP服务器太繁重了。无论Apache Directory Studio有多好,用户仍然需要对LDAP有一个合理的理解(不仅仅是解释树层次结构)。我还希望在创建模式时具有一定的灵活性(或者根本不创建模式) 而不必依赖管理员来完成这项工作

  • Windows注册表编辑。我不确定这是否可行,但我想可以设想有一个类似注册表的文件,它与实际的windows注册表无关,可以通过Regedit使用自定义内容进行编辑。然而,我希望这个GUI应用程序在非Windows平台上可用,我甚至不确定是否有Python API来读取Windows注册表文件

  • RDF。那可能行得通。我确信语义web有相当好的Python库。但是,我不需要任何推理能力。我想要一些快速的,不占用太多内存的东西。我不确定是否有好的GUI工具来查看和编辑树(因为它是面向Web和图形的)

  • 当然,有很多方法可以在现有系统(例如SQLite)之上构建这种数据结构,这也不错,但我不确定是否有一个好的GUI


    非常感谢您的评论和建议。

    请原谅我的密集性,但如果您的层次结构不是最粗糙的示例,那么您选择JSON甚至(吞咽!)XML时一定有非常令人信服的、压倒一切的理由:

    1. 矩形 10 10 30 40 2. 三角形 20 50 30> 40 对于XML,您知道有很多编辑器可以满足您的需要。JSON也是如此。我认为还有XML->MySQL->XML库


    为什么不采取这种方法呢?

    谢谢你的建议。我也考虑过XML,但我希望避免每次需要读取DOM文档时加载该文档的开销(内存限制)。这将最终成为一个大文件(在RDBMS方面很小,但大约为5-10MB)。不过,对于exchange格式来说,这是很好的。我认为,如果SQL引擎具有一些原生XML支持(MySQL、PostgreSQL),那么速度和内存需求将因SQL引擎索引XML文档的方式而发生很大变化。我必须承认我脑子里想的是更嵌入式的东西,而SQLite似乎不支持XML操作。“更嵌入式”:那就太好了。不过,和你一样,我也不知道有什么能让你摆脱编写至少一些代码的痛苦。你能用一个shell脚本把所有的片段装订在一起吗?是否有助于考虑在浏览器窗口中运行应用程序?我不介意为此编写一些代码,但最好不要为GUI编写代码。我心目中的“更嵌入式”类似于SQLite,它不需要运行其他服务器。如果不可能,我想我可以设置一个MySQL或PostgreSQL服务器,但我更愿意编写不依赖于特定SQL风格的代码。我不介意SQL的一些小改动,但根据我的经验,SQL数据库中的XML支持不仅在语法上不同,而且在支持的内容上也不同。 <items> <item> <number>1</number> <shape>rectangle</shape> <top>10</top> <left>10</left> <width>30</width> <height>40</height> </item> <item> <number>2</number> <shape>triangle</shape> <top>20</top> <left>50</left> <width>30></width> <height>40</height> </item> </items>