AppEngine - AppEngine HR 数据存储中奇怪的 ID 分配
我有一个AppEngine 中的 Python 应用程序。我正在使用高复制数据存储。
这是我的问题:
我有一个实体(为简单起见,将其称为“人”)在没有父实体的情况下保存,它是 AppEngine 术语中的根实体。
在保存实体之前我没有设置 key_name,因为我想要由数据存储分配的数字 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等。
这是怎么回事?我应该怎么做才能让它们保持连续?
谢谢!
Possible Duplicate:
How to implement “autoincrement” on Google AppEngine
I've got a Python App in AppEngine. I'm using High Replication Datastore.
This is my problem:
I have an entity (call it Person for simplicity) that is saved without parents, it's a root entity in the AppEngine terms.
I don't set a key_name before save my entities, becouse i want the numeric IDs assigned by the DataStore. Some Code:
p = Person(name='Juan Roman Riquelme')
p.put()
p.key().id() # the numeric ID
The problem is that the IDs are not consecutive. Every time i update my app (appcfg.py update .) the ids start in the next thousands. I mean, the first time i update my app, the IDs where 1,2,3,etc. The next time were: 1001,1002,1003, etc. The thirth: 2001,2002, etc.
What's going on? What should i do to keep them consecutive?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么需要它们是连续的?
App Engine 数据存储区不会分配连续的 ID。
如果你想要连续的ID,你必须自己分配ID。不要忘记使用 allocate_id_range (http://code.google.com/appengine/docs/python/datastore/functions.html),以便应用引擎不会自动分配已存在的 ID。
Why do you need them to be consecutive?
App Engine datastore doesn't assign IDs to be consecutive.
If you want consecutive IDs, you must assign IDs yourself. Don't forget to use allocate_id_range (http://code.google.com/appengine/docs/python/datastore/functions.html) so that app engine doesn't automatically assign already-existing IDs.