在应用引擎 blobstore 中找到并删除孤立 Blob 是否可行?
我在使用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 来重新实现这个功能。