小文件的存储

对于小文件的存储,指小于16M的文件

import bson
bson.binary.Binary()
功能: 将bytes格式字符串装换为mongodb的二进制存储格式

将文件存储到数据库中:

#小文件存储方案
#直接装换为二进程格式插入到数据库

from pymongo import MongoClient
import bson.binary

conn = MongoClient("localhost", 27017)
db = conn.image

myset = db.python

#存储文件
f = open("mongo1.py", "rb")

#将图片或文件内容转换为可存储的二进制格式
content = bson.binary.Binary(f.read())

#插入到文档
myset.insert({"filename":"mongo1.py","data":content})

conn.close()

存放到数据库中的格式是:{ "_id" : ObjectId("5ba4bc1f69d72e1bc400161f"), "data" : BinData(0,"ZnJvbSBwe..........NlKCkK"), "filename" : "mongo1.py" }

从数据库中取出文件:

from pymongo import MongoClient
#连接数据库对象
conn = MongoClient("localhost", 27017)
#创建数据库对象
db = conn.image

#创建集合对象
myset = db.python

#提取文档,由于find_one返回之后的是一个字典
dic = myset.find_one({"filename":"mongo1.py"})
with open("mongo5", "wb") as f:
    #通过字典的键值来获取数据并写到新的文件中
    f.write(dic["data"])

conn.close()
原文地址:https://www.cnblogs.com/zengsf/p/9690422.html