AppEngine - AppEngine HR DataStore中的奇怪ID分配

时间:2011-06-23 15:54:21

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

  

可能重复:
  How to implement “autoincrement” on Google AppEngine

我在AppEngine中有一个Python应用程序。我正在使用High Replication数据存储区。

这是我的问题:

我有一个没有父母保存的实体(简称为Person),它是AppEngine条款中的根实体。

在保存我的实体之前,我没有设置key_name,因为我想要DataStore分配的数字ID。一些代码:

p = Person(name='Juan Roman Riquelme')
p.put()
p.key().id() # the numeric ID

问题是ID不是连续的。每当我更新我的应用程序(appcfg.py update。)时,ID都会在接下来的几千个中开始。我的意思是,我第一次更新我的应用程序,ID 1,2,3等。下一次是:1001,1002,1003等等,其中包括:2001,2002等。

发生了什么事?我该怎么做让他们连续?

谢谢!

1 个答案:

答案 0 :(得分:3)

为什么你需要他们连续?

App Engine数据存储区不会将ID指定为连续的。

如果您想要连续的ID,您必须自己分配ID。不要忘记使用allocate_id_range(http://code.google.com/appengine/docs/python/datastore/functions.html),以便应用引擎不会自动分配已有的ID。