我在服务器上传了文件(PDF 4mb),它存储在blobdir中。在(zodb data.fs)中使用属性附件在MYCLASS的对象中引用。如果我删除MYCLASS的对象,则删除该对象,但不删除blobdir上的文件(PDF 4mb)。删除对象后如何删除该blob文件?
答案 0 :(得分:0)
该文件是过去ZODB修订版的一部分。您需要打包您的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文件;无论何时打包备份都会创建,以防您需要还原操作。将来的打包操作将使用新备份替换先前的备份,从而清除blob。