Google App Engine增量标识符(ID)

时间:2010-11-24 11:10:44

标签: google-app-engine key sequence

我正在为GAE托管的学校构建一个软件,我需要在创建时为新学生创建和排序标识符,它实际上不需要是“密钥”,但需要增加这个数字一个,每次添加一个新学生,它将是学校卡上打印的学号。

使用low level API,我这样做:

student = new Entity("student")
student << params.subMap(["name", "birthdate"])
student.save()

它正在创建ID,但它没有增加一个,它有点随机......

我也尝试了解KeyRange,但没有得到任何结果。

一些帮助?

2 个答案:

答案 0 :(得分:1)

您可以使用Entity(String kind, String keyName)构造函数创建Entity

new Entity("student", "" + id);

只要id在所有学生中都是唯一的。

要维持增加的计数器,只需使用普通数据存储区实体来存储计数。数据存储(事务)的并发保护将整齐地确保顺序实体编号。分片计数器不一定会给你连续的ID(感谢@Nick Johnson)。

通过密钥名称获取的一种方法是(来自here):

DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("student", "" + id)
Entity entity = ds.get(key);

答案 1 :(得分:0)

您可能希望查看How to implement "autoincrement" on Google AppEngine,您可以在其中找到序列号的Python实现。