Google app engine Can';t删除google app engine中的数据存储实体
我尝试以两种不同的方式删除所有数据存储实体,但出现错误: 尝试1:Google app engine Can';t删除google app engine中的数据存储实体,google-app-engine,google-cloud-datastore,app-engine-ndb,google-app-engine-python,Google App Engine,Google Cloud Datastore,App Engine Ndb,Google App Engine Python,我尝试以两种不同的方式删除所有数据存储实体,但出现错误: 尝试1: results = myDS().query().fetch() for res in results: res.delete() 尝试2: results = myDS().query().fetch() ndb.delete_multi(results) 在这两种情况下,它都失败了,我得到了错误: 服务器遇到错误,无法完成您的请求 知道为什么吗?在从查询中获得的结果中,您有实际的实体 在第一次尝试中,要删除实体,
results = myDS().query().fetch()
for res in results:
res.delete()
尝试2:
results = myDS().query().fetch()
ndb.delete_multi(results)
在这两种情况下,它都失败了,我得到了错误:
服务器遇到错误,无法完成您的请求
知道为什么吗?在从查询中获得的
结果中,您有实际的实体
在第一次尝试中,要删除实体,需要在实体的键上而不是实体本身上调用.delete()
,另请参见:
类似地,在第二次尝试中,您需要将实体键而不是实体传递到ndb.delete_multi()
,另请参见:
但在这两种情况下,直接从查询中获取实体键更有效(实际上不需要实体本身来删除它们)。它也更便宜,因为您将跳过数据存储读取操作。您的尝试如下所示:
keys = myDS().query().fetch(keys_only=True)
for key in keys:
key.delete()
keys = myDS().query().fetch(keys_only=True, limit=500) # up to 500 keys at a time
ndb.delete_multi(keys)
@Dan Cornilescu的问题被编辑为我的尝试和错误消息
ndb.delete_multi([r.key for r in results])
keys = myDS().query().fetch(keys_only=True)
for key in keys:
key.delete()
keys = myDS().query().fetch(keys_only=True, limit=500) # up to 500 keys at a time
ndb.delete_multi(keys)