我正在尝试做一些我觉得微不足道的事情,所以如果其他地方有一些简单的解决方案,请原谅我。
我正在为一些内容索引编写测试,为此我试图将一些二进制数据(pdf)插入到我拥有的 mongo 集合中。但是,我在这方面遇到了很多麻烦。这是我相关代码的当前状态
pseudo_file = StringIO()
pdf = pisa.CreatePDF("This is a test", pseudo_file)
test = {"data": pseudo_file}
test.update({"files_id": {"name": "random_asset_name"}, "category": "asset"})
self.chunk_collection.insert(json.dumps(test))
我设法在 Pymongo google 组上找到了一个旧线程来解决这个问题(https://groups.google.com/forum/#!topic/mongodb-user/uBAbY1wdQbs),但我似乎找不到那个Binary
对象用于解决该问题,但它似乎不包含在 Python 中(我使用的是 2.7)
现在我遇到的问题是该StringIO
对象不是 JSON 可序列化的,这是明智的,但 pymongo 需要一个有效的 utf8 对象传递给它。我尝试使用 base64 编码StringIO.getvalue()
,并直接序列化相同的值。
当然 pdf 不是 utf8 值,所以我想知道是否有另一种方法让 pymongo 认识到我正在向它发送原始二进制文件。任何帮助表示赞赏。