在应用引擎 blobstore 中找到并删除孤立 Blob 是否可行?

5 投票
2 回答
1998 浏览
提问于 2025-04-15 23:19

我在使用Python的接口时,测试过程中创建了一些孤立的“数据块”。

由于仪表盘里有个错误,我现在无法删除这些数据块。而且以后我希望能通过编程的方式来删除它们,因为一旦数据量增多,手动删除就不太现实了。

2 个回答

1

稍微改进一下:使用 run 而不是 fetch,会返回一个可迭代的对象,而不是一个列表,这样你就不需要限制查询结果的数量了:

blobs = BlobInfo.all().run()

而不是

blobs = BlobInfo.all().fetch(500)
13

如果你的 BlobReferenceProperty 字段是被索引的,那就没问题,这样做是完全可以的。

BlobInfo 类提供了一组和普通模型一样的字段,所以你可以像这样操作:

blobs = BlobInfo.all().fetch(500)
for blob in blobs:
  if not MyModel.all().filter("blob_ref =", blob.key()).count(1):
    blob.delete()

如果你有很多的 blobs,可能需要用最近简化的 mapreduce API 来重新实现这个功能。

撰写回答