谷歌appengine数据存储区中的主键

时间:2010-11-21 16:24:52

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

    from google.appengine.ext import db
    from datetime import date    
    class Test(db.Model):
        title=db.StringProperty(required=True)
        tags=db.StringListProperty(required=True)

对象的测试类型上的打印显示

Test(key_id=1, title='ashu_saved', tags=['db'])

但是title.key_id无法访问key_id属性。test.pk返回u'agRibG9nchILEgxhc2lzYWlkX3Rlc3QYAQw'有没有办法获得可以在网址中使用的漂亮的整数主键,来自google-appengine中的模型对象?

2 个答案:

答案 0 :(得分:4)

尝试:

yourkey = test.key().id()

并获得你的价值:

Test.get_by_id(ids = yourkey)

答案 1 :(得分:0)

这是无效的解决方案,因为所有记录都有id(),最好是这个:

key = entity.key()
Model.get(key)

记录可以有id()或name()但必须有key()。

即使你的所有记录都有id(),它仍然是错误的,因为实体由ApplicationId,NamespaceId,ParentModel,Model以及id或key来寻址。主要关键是所有领域。

这意味着如果您使用命名空间或使用父级来保持事务一致,您可以拥有许多具有相同id()的实体 - 如果您不确定,请尽量避免使用id()。