首页 > 解决方案 > 使用 pymongo 从 MongoDB 读取图像数据失败

问题描述

我使用以下方法在表中保存在 MongoDB 中的图像:

@staticmethod
def upload_member_image(member_id, raw_image):
    Database.insert("files", {"_id": uuid.uuid4().hex,
                              "member_id": member_id,
                              "image": Binary(raw_image.read())
                              })

调用:

@staticmethod
def insert(collection, data):
    Database.DATABASE[collection].insert_one(data)

记录已正确保存,我可以在 mongo 控制台中看到它:

db.files.count()
1
> db.files.find()
{ "_id" : "41dbbe5f5d6b49b4b8cb5ed806aa8110", "member_id" : "114f4ff3d8b743a7bbc88a7caf2be928", "image" : BinData(0,"/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhM
 ...

文件本身非常小,它的大小是:53.2 KB(54,541 字节)

但是,当我尝试从数据库中读取它时,我什么也没得到,没有数据被读取。我正在尝试使用常规方法执行此操作:

@staticmethod
def find(collection, query):
    return Database.DATABASE[collection].find(query)

这里有什么问题?二进制数据是否需要“特殊处理”?

更具体地说,上面的数据库调用会引发异常:

return Database.DATABASE[collection].find_one(query)
TypeError: 'NoneType' object is not subscriptable

查询是:

{"member_id": member_id}

member_id 值完全符合预期

标签: python-3.xpymongo-3.x

解决方案


推荐阅读