2014-12-11 5 views
0

Я загрузил файл (PDF 4mb) на сервер, он хранится в blobdir. и ссылку в объекте MYCLASS с прикреплением атрибута в (zodb data.fs). если я удаляю объект MYCLASS, тогда этот объект удаляется, но файл (PDF 4mb) на blobdir не удаляется. как удалить этот файл blob после удаления объекта?Как удалить файл (blob) из blobdir после удаления объекта формы zodb (data.fs)

ответ

0

Файл является частью прошлой версии ZODB. Вам нужно будет pack вашу базу данных ZODB, чтобы удалить исторические изменения.

Как далеко вы упаковываете свою базу данных зависит от вас. После удаления старых версий вы больше не сможете откатить базу данных в этих состояниях.

Как вы упаковываете ZODB, зависит от вашей установки. Если вы используете ZEO, есть инструмент командной строки (zeopack), который инструктирует сервер ZEO для упаковки вашего хранилища.

Вы также можете сделать это программно; из приложения пирамиды, например, с db.pack() method:

import time 
from pyramid_zodbconn import get_connection 

db = get_connection(request).db() 
db.pack(days=7) 

Я использовал параметр days для упаковки ZODB, но сохранить историю на прошлой неделе. Вы также можете использовать временную отметку t (UNIX секунд с эпохи), чтобы указать конкретный момент времени, в который нужно упаковать, или опустить либо для удаления всех старых версий.

Как только исправление, ссылающееся на blob, удаляется, файл blob не удаляется немедленно; всякий раз, когда вы создаете резервную копию, создается, если вам нужно вернуть операцию. Операция в будущем пакете заменяет предыдущую резервную копию новой резервной копией, очищая капли навсегда.