MongoEngine – GridFS

MongoEngine – GridFS

在MongoDB中,大小超过16MB的文件使用GridFS规范存储。一个文件被划分为多个块,每个块的默认大小为255KB。大块的大小可以根据需要而定。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()

FileField 的内容可以通过 Python 的 File 对象的 read() 方法检索。

logo = l1.logo.read()

也有 delete() 方法来删除存储的文件。

l1 = lang.objects(name='Python').first()
l1.logo.delete()
l1.save()

注意,FileField只在一个单独的GridFS集合中存储文件的ID。因此,delete()方法并不能从物理上删除该文件。

replace() 方法有助于用另一个文件来替换文件的引用。

l1 = lang.objects(name='Python').first()
f=open('newlogo.png','rb')
l1.logo.replace(f,content_type='image/png')
l1.save()

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程