2

类似于JSON 是否有查询语言?以及更具体的如何过滤具有属性值的 YAML 数据集?- 我想:

  • 手动编辑 YAML 文件中的少量数据
  • 对完整数据集执行任意查询(可能在 Python 中,对其他想法开放)
  • 在 Python 中使用生成的子集

PyYAML似乎没有这样的功能,今天我找不到 YQuery 语言的链接,反正这不是一个成熟的项目(或者也许是我梦寐以求的)。

是否有提供 YAML 查询的(Python)库?如果没有,是否有一种 Pythonic 方式来“查询”一组对象,而不仅仅是迭代它们?

4

4 回答 4

1

我不认为有直接的方法可以做到这一点。但是 PyYAML 将 yaml 文件读入一个代表文件中所有内容的字典。之后,您可以执行所有与 dict 相关的操作。基于值的字典中的python查询键问题提到了一些pythonic“查询”样式。

于 2014-02-07T14:46:39.200 回答
1

bootalchemy提供了一种通过 SQLAlchemy 执行此操作的方法。首先,在 SQLAlchemy 模型中定义您的模式。然后使用 bootalchemy 将 YAML 加载到 SQLAlchemy 会话中。最后,对该会话执行查询。(您不必将会话提交到实际数据库。)

PyPI 页面中的示例(假设model已定义):

from bootalchemy.loader import Loader

# (this simulates loading the data from YAML)
data = [{'Genre':[{'name': "action",
                   'description':'Car chases, guns and violence.'
                  }
                 ]
        }
       ]

# load YAML data into session using pre-defined model
loader = Loader(model)
loader.from_list(session, data)

# query SQLAlchemy session
genres = session.query(Genre).all()

# print results
print [(genre.name, genre.description) for genre in genres]

输出:

[('action', 'Car chases, guns and violence.')]
于 2014-02-26T14:00:26.000 回答
0

您可以尝试使用 jsonpath 吗?是的,这意味着 json,而不是 yaml,但只要你有 json 兼容的数据结构,这应该可以工作,因为你正在处理解析的数据,而不是 json 或 yaml 表示?(似乎适用于 python 库jsonpathjsonpath-rw

于 2014-02-07T16:11:31.593 回答
0

您可以检查以下工具:

  • yq用于 CLI 查询,例如jq
  • yaml-query另一个用 Python 编写的 CLI 查询工具。
于 2021-10-21T13:37:26.400 回答