【问题标题】:Traversing BSON binary representation in python?在python中遍历BSON二进制表示?
【发布时间】:2014-05-09 01:12:30
【问题描述】:

我不想将整个 BSON 文档反序列化为 python dict,而是直接遍历它,利用 BSON 格式的原生可遍历性[1,2]

任何可用的 python BSON 库都可以吗?我可以很容易地看到获取 dict 的方法,但遍历二进制格式的方法似乎并不明显。

  1. https://groups.google.com/forum/#!topic/bson/e7aBbwA6bAE
  2. http://bsonspec.org/

【问题讨论】:

    标签: mongodb bson


    【解决方案1】:

    这听起来像您要找的东西:https://github.com/bauman/python-bson-streaming

    它允许流式传输 bson,而不是将整个文件加载到内存中。

    来自文档:

    from bsonstream import KeyValueBSONInput
    from sys import argv
    
    for file in argv[1:]:
        f = open(file, 'rb')
        stream = KeyValueBSONInput(fh=f, fast_string_prematch="somthing") #remove fast string match if not needed
        for id, dict_data in stream:
            if id:
                ...process dict_data...
    

    【讨论】:

      【解决方案2】:

      您遇到的问题是将 BSON 字符串转换为迭代器,它本身就是一个对象,您必须实际转换为语言结构,即字典。

      即使使用 BSON 库,它仍然需要将其转换为 python 可以理解的可遍历对象,也就是字典。

      但是回答你的问题:我不知道。

      【讨论】:

        猜你喜欢
        • 2015-02-16
        • 2019-07-24
        • 2014-07-11
        • 2014-02-14
        • 1970-01-01
        • 2016-03-21
        • 2011-11-10
        • 2020-06-14
        相关资源
        最近更新 更多