我有一个 python BSDDB 数据库。显然,它存储在硬盘上。当我删除一些条目时,驱动器上的文件并没有变小(因此 - 它增长得非常快......)
utDelList = []
urlsDelList = []
for ut in iter(self.urls2task):
tmp = string.split(ut, ":")
uid = tmp[1]
url = cPickle.loads(self.urls[int(uid)])
urlsDelList.append(uid)
utDelList.append(ut)
del self.urlsDepth[uid]
del self.urlsStatus[uid]
del url
for ut in utDelList:
del self.urls2task[ut]
for uid in urlsDelList:
del self.urls[int(uid)]
(...)
#synchronize all files
self.sync()
我最后的希望是以野蛮的方式强制刷新 - 通过再次关闭和打开文件
#close all files & start them again, eg
self.tasks.close()
self.urls2task.close()
self.tasks = bsddb.rnopen(filepath)
self.urls2task = bsddb.hashopen
这里的关键元素是 self.tasks 条目;它是所有文件中增长最快和最大的。酸洗保存会改变删除它的方式吗?而且,再一次 - 为什么文件在删除它们后仍然保留条目?我很感激 4any 建议(这里的第一篇文章 :))