MongoEngine - 檔案系統



在 MongoDB 中,大於 16 MB 的檔案按照 GridFS 規範儲存。一個檔案被分成多個塊,每個塊的預設大小為 255KB。大塊可能大到所需的大小。GridFS 使用兩個集合,一個用於塊,另一個用於元資料。

如果希望訪問檔案而無需將其全部載入記憶體,可以使用 GridFS 來儲存任何檔案。

MongoEngine API 透過FileField物件支援 GridFS。透過此物件,可以插入和檢索資料。FileField 物件的put()方法有助於將檔案作為文件的一部分進行編寫。

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 只儲存一個單獨 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()
廣告
© . All rights reserved.