小文件的存储
对于小文件的存储,指小于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()