python - 将二进制数据插入pymongo中的Mongo字段

标签 python mongodb encoding pymongo binaryfiles

我正在尝试做一些我觉得微不足道的事情,如果其他地方有一些简单的解决方案,请原谅我。

我正在为一些内容索引编写测试,为此我试图将一些二进制数据(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 谷歌组上找到一个旧线程来解决这个问题 ( https://groups.google.com/forum/#!topic/mongodb-user/uBAbY1wdQbs ),但我似乎找不到用于解决该问题的 Binary 对象,并且它似乎没有包含在 Python 中(我使用的是 2.7)

现在我遇到的问题是 StringIO 对象不是 JSON 可序列化的,这是明智的,但 pymongo 需要传递给它的有效 utf8 对象。我尝试使用 StringIO.getvalue() 的 base64 编码,并直接序列化相同的值。

当然 pdf 不是 utf8 值,所以我想知道是否有另一种方法让 pymongo 识别我正在向它发送原始二进制文件。感谢您的帮助。

最佳答案

Google 群组实际上是正确的,但是,在该帖子发布后的某个时候,binary 类被移动到 bson 命名空间,因此您必须从那里导入它。

文档页面上有很好的示例:http://api.mongodb.org/python/current/api/bson/binary.html

关于python - 将二进制数据插入pymongo中的Mongo字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213544/

相关文章:

python - 通过字典中的不同值查找所有关键元素

angular - 使用 angular web 应用程序调用 mongo/golang db 时被 CORS 策略错误阻止

MongoDB:查找字段具有最低值的重复文档

javascript - 如何找到 JSON 对象数组的差异?

python - 匹配两个通配符字符串

python - 如何获得在 python 中按下的最后一个键?

html - 如何使网站显示 "č"和 "ć"之类的标志?

php - URL缩短器: best encoding method?

python - Python 的 IDLE 与其命令行之间的区别

html - 在网页上使用排版引号是一种好习惯吗?