python-3.x - 使用 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 值完全符合预期
解决方案
推荐阅读
- android - Android Dagger2 问题。找到多个 Retrofit 注释,只允许一个
- javascript - React Router redirect after submitting a form using the input value
- php - 从具有特定开始日期的随机顺序对天数数组进行排序
- ssl - SSL 终止后本地 kubernetes 后端服务地址的 HTTPS 端点
- kotlin - 将可迭代对象收集到一个变量(列表)中
- node.js - 测试网上总是出错:交易未在 750 秒内被挖掘
- excel - VBA提示“打开”对话框并选择要从中导入导入的目录
- java - Java Prepared 语句等于时间戳字段上的日期比较
- ag-grid - ag-grid 的 IHeaderComponent 中的 angularjs 指令?
- php - 如何在 for 循环中创建一个数组并在 forloop 之外访问该数组