画像をMongoDBで保存する(qbit)
環境
bson(小画像) bsonは、16 MB未満の小さなファイル を格納するために使用される. Pythonサンプルコード
GridFS(大画像) GridFS 16 MBより大きいファイル を格納するために使用される.
本文は
qbit snap
Windows 10
MongoDB 4.2
Python 3.8
pymongo 3.10.1
bson(小画像)
#encoding: utf-8
#author: qbit
#date: 2020-05-20
#summary: MongoDB 、
import pymongo
from bson import binary
def img2mongo(coll: pymongo.collection.Collection,
imgId: str,
imgBuf: bytes):
r"""
coll: MongoDB
imgId: ID
imgBuf: Buffer
"""
print('img2mongo ...')
bin = binary.Binary(imgBuf)
return coll.insert_one({'_id': imgId, 'img_bin': imgBuf})
def mongo2img(coll: pymongo.collection.Collection,
imgId: str):
r"""
coll: MongoDB
imgId: ID
:
"""
print('mongo2img ...')
dic = coll.find_one({'_id': imgId})
return dic['img_bin']
if __name__ == "__main__":
username = 'xxx'
password = 'xxx'
host = '192.168.1.72'
port = 27017
dbname = 'student'
connStr = f'mongodb://{username}:{password}@{host}:{port}/{dbname}?authSource=admin'
db = pymongo.MongoClient(connStr).get_database()
coll = db.img
coll.drop()
with open('520_in.jpg', mode='rb') as f:
inBuf = f.read()
img2mongo(coll, '520', inBuf)
outBuf = mongo2img(coll, '520')
with open('520_out.jpg', mode='wb') as f:
f.write(outBuf)
GridFS(大画像)
本文は
qbit snap