MongoEngine GridFS
在 MongoDB 中,大小大于 16 MB 的文件使用 GridFS 规范存储。一个文件被分成多个块,每个块的默认大小为 255KB。大块可以根据需要大。 GridFS 使用两个集合,一个用于块,另一个用于元数据。
如果你想访问它而不必将其完全加载到内存中,GridFS 可用于存储任何文件。
MongoEngine API 通过以下方式支持 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()
FileField 的内容可以通过 Python 的 File 对象的 read() 方法来获取。
logo = l1.logo.read()
还有 delete() 方法来删除存储的文件。
l1 = lang.objects(name='Python').first() l1.logo.delete() l1.save()
请注意,FileField 仅将文件的 ID 存储在单独的 GridFS 集合中。因此 delete() 方法不会物理地删除文件。
The 代替() 方法有助于用另一个文件替换文件的引用。
l1 = lang.objects(name='Python').first() f=open('newlogo.png','rb') l1.logo.replace(f,content_type='image/png') l1.save()