Google app engine 如何在ndb数据库(python)中通过查询删除记录?
我是谷歌应用引擎的新手。如果你觉得我的问题很愚蠢,请容忍我。 我想通过查询删除整个记录。在这段代码中,我传递了记录的访问令牌,它是我的模型的一个字段,并删除了所有具有该访问令牌的记录,但我得到了错误“模块中没有delete()。请给我一些解决办法。提前谢谢Google app engine 如何在ndb数据库(python)中通过查询删除记录?,google-app-engine,python-2.7,google-cloud-datastore,Google App Engine,Python 2.7,Google Cloud Datastore,我是谷歌应用引擎的新手。如果你觉得我的问题很愚蠢,请容忍我。 我想通过查询删除整个记录。在这段代码中,我传递了记录的访问令牌,它是我的模型的一个字段,并删除了所有具有该访问令牌的记录,但我得到了错误“模块中没有delete()。请给我一些解决办法。提前谢谢 class deletehandler(webapp2.RequestHandler): def get(self): access_token=self.request.get('access_token')
class deletehandler(webapp2.RequestHandler):
def get(self):
access_token=self.request.get('access_token')
gprofiles=User.query(User.access_token==access_token)
for g in gprofiles:
ndb.key.delete(g)
self.response.out.write("Profile is deleted")
delete()方法是一个实例方法。试试这个:
for g in gprofiles:
g.key.delete()
self.response.out.write("Profile is deleted")
有案可查
更新:
正如Patrick提到的,批处理的仅密钥查询效率更高:
ndb.delete_multi([key for key in gprofiles.iter(keys_only=true)])
类deletehandler(webapp2.RequestHandler):def get(self):access_token=self.request.get('access_token')gprofiles=User.query(User.access_token==access_token)用于gprofiles中的g:ndb.key.delete(g)self.response.out.write(“配置文件已删除”)使用
ndb.delete\u multi([g.key for g in gprofiles]对其进行优化)
。你真的应该用:ndb.delete\u multi([g.key for g in gprofiles.iter(keys\u only=true)])
@PatrickCostello你需要将g.key
更改为g
-keys\u只会返回键,而不是ndb。模型实例:)没错!这就是当你突发奇想发布东西时发生的事情!我会再次更新。谢谢哎呀!这就是我没有先运行它的原因。谢谢你接电话。