如何在谷歌应用引擎中删除孤立的blob

时间:2014-06-04 08:11:38

标签: google-app-engine blobstore

我一直在关注本网站上的说明 - Is it possible to find and delete orphaned blobs in the app engine blobstore? - 关于如何删除孤立的blob,但我一直收到错误。

from google.appengine.ext.blobstore import BlobInfo

#Here is where I store my blobKeys
class Content(ndb.Model):
  blobKey = ndb.BlobKeyProperty(required=False)

#Here is what I've been trying to follow
class Refresh(blobstore_handlers.BlobstoreUploadHandler):
  def get(self):
  blobs = BlobInfo.all().fetch(500)
  for blob in blobs:
    if not Content.all().filter("blob_ref =", blob.key()).count(1): #ERROR
      blob.delete()

我一直收到错误AttributeError: type object 'Content' has no attribute 'all'

海报提到"如果您的BlobReferenceProperty字段被编入索引,那么是的,它很可能。"这可能是我使用ndb.BlobKeyProperty而不是BlobReferenceProperty的问题吗?谢谢,阅读。

更新 请参阅Expected BlobKey but instead I get a BlobInfo object - How to get BlobKey from BlobInfo object?以查看解决方案

1 个答案:

答案 0 :(得分:1)

你在混淆db和ndb apis

要使用ndb进行查询,请使用query方法

在你的情况下

blobs = BlobInfo.query().fetch(500)

但这不是真的正确。你应该把它重写为

for blob in BlobInfo.query(options=QueryOptions(batchsize=200))
   # do stuff