Google app engine 从应用程序引擎中删除实体
我将从python应用程序引擎服务器中删除条目,如下所示:Google app engine 从应用程序引擎中删除实体,google-app-engine,entity,google-cloud-datastore,Google App Engine,Entity,Google Cloud Datastore,我将从python应用程序引擎服务器中删除条目,如下所示: try: while True: q = db.GqlQuery("SELECT __key__ FROM SampleData") assert q.count() db.delete(q.fetch(400)) time.sleep(0.2) except Exception, e:
try:
while True:
q = db.GqlQuery("SELECT __key__ FROM SampleData")
assert q.count()
db.delete(q.fetch(400))
time.sleep(0.2)
except Exception, e:
self.response.out.write(repr(e)+'\n')
pass
try:
while True:
q = db.GqlQuery("SELECT __key__ FROM UserData")
assert q.count()
db.delete(q.fetch(400))
time.sleep(0.2)
except Exception, e:
self.response.out.write(repr(e)+'\n')
pass
…但它看起来很难看,我一直怀疑它不完全可靠。是否有更好的方法来删除某些类型的条目,而不是创建其中一个while循环
更新:我的一个限制是,我通过cron作业定期运行此操作,因此不希望手动执行此操作(例如,通过管理控制台)。您可以使用管理控制台的datastore admin选项卡删除所有类型的实体,有关详细信息,请参阅此处:
如果要删除大量数据,可能需要使用谷歌提供的库——让cron作业启动一个延迟任务,该任务可以批量删除对象:
class DeleteMapper(mapper.Mapper):
KIND = MyKindOfObject
# Delete all objects of type MyKindOfObject.
def map(self, key):
todelete = [key]
return ([], todelete)
您可能可以对较新的库执行类似操作,但是,我没有为您提供示例。一些改进:
如果要删除大部分或全部内容,您可能需要使用mapreduce库。谢谢,有用的链接。不幸的是,我忘了提到,我正在定期删除这些作为cron作业的一部分,而不是在调试中重置实体时才执行的操作。我将更新问题。抱歉说得含糊不清。