在Google App Engine数据存储区(对于Python)中,默认情况下ndb键ID是否总是整数?

时间:2016-01-13 23:15:27

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

似乎是这种情况,但我无法在文档中确认。

enter image description here包括方法idstring_idinteger_id。在id中,它声明:

  

返回最后一个(kind,id)对中的字符串或整数id,如果密钥不完整,则返回None。

我假设{Key}构造函数显式传递了字符串id时,string_id只返回一个有效的id。

1 个答案:

答案 0 :(得分:1)

我确认是这种情况。在文档ndb Key class中声明(有些人可能会说,埋没):

  

应用程序可以在不指定ID的情况下创建实体;数据存储区自动生成数字ID。

代码示例:

from google.appengine.ext import ndb

class Fingerprint(ndb.Model):
    fingerprint = ndb.StringProperty(required=True)

fingerprint = Fingerprint(fingerprint='abc')
new_key = fingerprint.put()
print new_key.id(), type(new_key.id())

fingerprint = Fingerprint(id='abc', fingerprint='abc')
new_key = fingerprint.put()
print new_key.id(), type(new_key.id())

fingerprint = Fingerprint(id=100, fingerprint='abc')
new_key = fingerprint.put()
print new_key.id(), type(new_key.id())

输出:

4785074604081152 <type 'long'>
abc <type 'str'>
100 <type 'long'>