我是app-engine的新手[Python 2.7] 我想删除我的ndb中的元素(目前我不在乎它是一个一个还是一个一个,因为没有一个对我有效)。
版本1基于this Q:
ps_ancestors = req_query.fetch()
for ps_ancestor in ps_ancestors:
self.response.write(ps_ancestor.key)
ps_ancestor.key.delete()
它继续打印相同的数据而不实际删除任何内容
版本2: [myId目前只有值1,2,3]
ndb.Key(myId, 1).delete()
ndb.Key(myId, 2).delete()
ndb.Key(myId, 3).delete()
模特:
class tmpReport (ndb.Model):
myId = ndb.IntegerProperty()
hisId = ndb.IntegerProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
我错过了什么?
答案 0 :(得分:1)
k = users.query(users.name == 'abhinav')
for l in k.fetch(limit = 1):
l.key.delete()
答案 1 :(得分:0)
首先,您不应将Entity键定义为IntegerProperty。请查看此文档:NDB Entities and Keys
要从数据存储中删除实体,您应首先使用查询或ID来检索它。我建议您在创建实体时使用“keyname”(将其用作自定义ID):
# Model declaration
class tmpReport (ndb.Model):
hisId = ndb.IntegerProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
# Store the entity
report = tmpReport(id=1, hisId=5)
report.put()
然后检索并删除以前的实体使用:
# Retrieve entity
report = ndb.Key("tmpReport", 1).get()
# Delete the entity
report.key.delete()
希望它有所帮助。
答案 2 :(得分:0)
query1 = tmpReport.query()
query2 = query1.filter(tmpReport.myId == int(myId))
#Add other filters as necessary
query3 = query2.fetch()
query3[0].key.delete()
删除假定myID唯一的返回的第一个实体(元素),因此列表中只有一个元素。