【问题标题】:primary key in google appengine datastore谷歌应用引擎数据存储中的主键
【发布时间】:2011-05-13 10:31:41
【问题描述】:
    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 中的模型对象中获取我可以在 url 中使用的漂亮的整数主键-应用引擎?

【问题讨论】:

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


    【解决方案1】:

    尝试:

    yourkey = test.key().id()
    

    并让您的价值恢复:

    Test.get_by_id(ids = yourkey)
    

    【讨论】:

    • 我如何使用这个 id 取回值?
    【解决方案2】:

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

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

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

    即使您的所有记录都有 id(),它仍然是错误的,因为实体是由 ApplicationId、NamespaceId、ParentModel、Model 寻址的,而不是 id 或键。 PRIMARY 键是所有字段。

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

    【讨论】:

      猜你喜欢
      • 2014-10-21
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      相关资源
      最近更新 更多