我可以在Python中查询YAML数据集吗?

时间:2014-02-07 14:20:43

标签: python yaml pyyaml

Is there a query language for JSON?类似,更具体How can I filter a YAML dataset with an attribute value? - 我想:

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

PyYAML似乎没有这样的功能,今天我找不到YQuery语言的链接,这不是一个成熟的项目(或许我梦见它) )。

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

3 个答案:

答案 0 :(得分:1)

我没有直接的方法来做到这一点。但PyYAML将yaml文件读入代表文件中所有内容的字典。之后您可以执行所有与dict相关的操作。问题python query keys in a dictionary based on values提到了一些pythonic“查询”样式。

答案 1 :(得分:1)

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

来自PyPI页面的

Example(假设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.')]

答案 2 :(得分:0)

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

相关问题