【问题标题】:Putting many entities in the datastore at once一次将许多实体放入数据存储区
【发布时间】:2012-01-10 22:49:56
【问题描述】:

我有一个循环,我将很多实体放入数据存储区,如下所示:

for line in open(file):
    if count >= limit:
        break
    elif count >= offset:
        prop1 = XXX
        prop2 = YYY
        MyEntity(prop1=XXX, prop2=YYY).put()
    count += 1

我知道使用bulk uploader,但我需要从代码中执行此操作.. 只要限制不是那么大,我目前所拥有的工作(否则我会收到超出期限的错误,但这不是这个问题的范围),我只是问是否有更好或更有效的方法来做到这一点,因为这似乎是一个丑陋的 hack,例如一种将所有实体放在一个镜头中而不是循环的方法。

【问题讨论】:

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


    【解决方案1】:

    您正在为您存储的每个实体进行数据存储往返。相反,累积它们并做一个批次放置:

    to_write = []
    for line in open(file):
      #...
      to_write.append(MyEntity(prop1=XXX, prop2=YYY)
    db.put(to_write)
    

    如果您仍需要将操作分成多个部分,请使用任务队列将每个工作块作为单独的任务排入队列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2012-02-14
      • 2015-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      相关资源
      最近更新 更多