Mongoengine 简明教程
MongoEngine - GridFS
在 MongoDB 中,使用 GridFS 规范存储大小超过 16 MB 的文件。一个文件被分成多个块,每个块的默认大小为 255KB。大块可以尽可能大。GridFS 使用两个集合,一个用于块,另一个用于元数据。
如果您想访问 GridFS 存储的任何文件,而不必将整个文件加载到内存中,可以使用 GridFS。
MongoEngine API 通过 FileField 对象支持 GridFS。使用此对象,可以插入和检索数据。FileField 对象的 put() 方法有助于将文件写为 Document 的一部分。
from mongoengine import *
con=connect('newdb')
class lang (Document):
name=StringField()
developer=StringField()
logo=FileField()
l1=lang()
l1.name='Python'
l1.developer='Van Rossum'
f=open('pylogo.png','rb')
l1.logo.put(f,content_type='image/png')
l1.save()
可以使用 Python 文件对象中的 read() 方法检索 FileField 的内容。
logo = l1.logo.read()
另外还有 delete() 方法,用于删除存储的文件。
l1 = lang.objects(name='Python').first()
l1.logo.delete()
l1.save()
请注意,FileField 仅将文件 ID 存储在单独的 GridFS 集合中。因此 delete() 方法不会实际删除文件。
replace() 方法有助于将文件引用替换为另一个文件。
l1 = lang.objects(name='Python').first()
f=open('newlogo.png','rb')
l1.logo.replace(f,content_type='image/png')
l1.save()