Python操作MongoDB进行文件存储

本文介绍如何利用Python的pymongo和gridfs模块将图片、文档等文件存储到MongoDB中。在存储过程中,文件需转换成二进制格式,存储后在MongoDB中表现为(chunk, files)两个文件。由于MongoDB BSON对象限制,GridFS将大文件拆分为多个小文档存储,确保文件元数据和内容的完整存储。" 133094567,19974113,物联网无线通信模块选择与编程指南,"['物联网技术', '无线通信模块', '编程语言', '网络拓扑', '物联网协议']
摘要由CSDN通过智能技术生成

将图片、文档等存入mogodb中,需要用到两个模块,pymongo和gridfs,在存入过程中必须将文件转换为二进制的格式才能存入,存入mongoDB中会生成两个文件xxx.chunk 和xxx.files。

GridFS是一种将大型文件存储在MongoDB的文件规范:数据库支持以BSON格式保存二进制对象。 但是MongoDB中BSON对象最大不能超过4MB。

GridFS 规范提供了一种透明的机制,可以将一个大文件分割成为多个较小的文档。

为实现这点,该规范指定了一个将文件分块的标准。每个文件都将在文件集合对象中保存一个元数据对象,一个或多个块对象可被组合保存在一个块集合中。

以存储图片为例,代码如下:

import pymongo
import gridfs
from bson import ObjectId
client = pymongo.MongoClient('localhost', connect=False)
db = client['demo']
# 存储到mongodb
def save_file_to_mongo(content):
    with open(content, 'rb') as f:
        data = f.read()
        fs = gridfs.GridFS(db, 'img')
        retrun fs.put(data)
# 从mongodb取出文件
def get_file_from_mongo(id):
    fs = gridfs.Gri
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值