Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 如何在ndb数据库(python)中通过查询删除记录?_Google App Engine_Python 2.7_Google Cloud Datastore - Fatal编程技术网

Google app engine 如何在ndb数据库(python)中通过查询删除记录?

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')

我是谷歌应用引擎的新手。如果你觉得我的问题很愚蠢,请容忍我。 我想通过查询删除整个记录。在这段代码中,我传递了记录的访问令牌,它是我的模型的一个字段,并删除了所有具有该访问令牌的记录,但我得到了错误“模块中没有delete()。请给我一些解决办法。提前谢谢

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。模型实例:)没错!这就是当你突发奇想发布东西时发生的事情!我会再次更新。谢谢哎呀!这就是我没有先运行它的原因。谢谢你接电话。