无法使用Google Datatstore获取或删除所有实体

时间:2015-07-13 15:50:56

标签: python google-app-engine google-cloud-datastore webapp2

我正在开发服务器中使用数据存储构建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()真的完成?

请与我分享您的意见。非常感谢你!

0 个答案:

没有答案