0

我已经在服务器上上传了文件(PDF 4mb),它存储在 blobdir 中。并在(zodb data.fs)中带有属性附件的MYCLASS对象中引用。如果我正在删除 MYCLASS 的对象,那么该对象将被删除,但 blobdir 上的文件(PDF 4mb)不会被删除。删除对象后如何删除该blob文件?

4

1 回答 1

0

该文件是过去 ZODB 修订版的一部分。您需要打包ZODB 数据库以删除历史修订。

将数据库打包到多远取决于您。一旦您删除了旧版本,您就不能再将数据库回滚到这些状态。

如何打包 ZODB 取决于您的设置。如果您使用的是 ZEO,则有一个命令行工具 ( zeopack) 可以指示 ZEO 服务器为您打包存储。

您也可以以编程方式进行;从您的 Pyramid 应用程序中,例如,使用以下db.pack()方法

import time
from pyramid_zodbconn import get_connection

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

我使用该days参数打包 ZODB,但保留过去一周的历史记录。您还可以使用时间戳t(自纪元以来的 UNIX 秒数)来指定要打包的特定时间点,或者省略其中一个以删除所有旧修订。

删除引用 blob 的修订后,不会立即删除 blob 文件;每次打包时都会创建备份,以防您需要恢复操作。未来的打包操作会用新的备份替换以前的备份,从而永久清除 blob。

于 2014-12-11T19:25:54.833 回答