我正在开发服务器中使用数据存储构建Webapp2应用程序。有时,在我保存了许多实体后,我无法获得所有实体。换句话说,我无法准确地获得所有实体。
代码段:
def saveItems(self, items):
# Get all existed items
existed_items = model.Items.all()
existed_ids = [item.myid for item in existed_items]
# Save new items
save_count = 0
skip_count = 0
for groups in [items[i:i+10] for i in range(0, len(items), 10)]:
save_items = []
for item in groups:
# Check this item whether exist or not
if item.id not in existed_ids:
save_item = model.Item(myid=item.id)
save_items.append(save_item)
else:
skip_count += 1
db.put(save_items)
# Total
save_count += len(save_items)
print "Save-Items, all: %s, save: %s, skip: %s" %\
(len(items), save_count, skip_count))
如果我有100个新实体,我第一次执行此方法并且显示正确:
Save-Items, all: 100, save: 100, skip: 0
但是,我用相同的数据立即执行了这个方法,并显示:
Save-Items, all: 100, save: 3, skip: 97
应显示save:0 skip: 100
。我检查了数据存储区查看器,它显示有103个实体。在第二次执行中,我在第3行model.Items.all()
中发现只检索了97个实体。因此,我假设在第二次执行中没有提交某些实体。
你们如何解决这个问题?你对这种情况有什么解决方案?是否有更好的解决方案来检查实体是否存在?或者,我如何确保put()
真的完成?
请与我分享您的意见。非常感谢你!