【问题标题】:Google datastore ID is a long unicode instead of an integerGoogle 数据存储区 ID 是长 unicode,而不是整数
【发布时间】:2014-11-30 05:22:28
【问题描述】:

您好,我正在从 Udacity 进行 Web 开发,并在 python 中试验 google 数据存储,并创建了一个名为 Blog 的简单实体。

我检查了 localhost:admin 端口,所有的 id 都像 '5249205949956096',应该是 '1','2','3' 而不是其他人。这应该与我的文本编辑器有关还是除了代码之外的其他设置错误?

class Blog(db.Model):
subject = db.StringProperty(required = True)
content = db.TextProperty(required =True)
created = db.DateTimeProperty(auto_now_add = True)

class NewPostHandler(Handler):
def get(self):
    self.render("newpost.html")

def post(self):

    subject = self.request.get("subject")
    content = self.request.get("content")

    if subject and content:
        newblog=Blog(subject=subject,content=content)
        newblog_key = newblog.put()

【问题讨论】:

  • 实际上是 Long,而不是 String。

标签: python database google-app-engine unicode google-cloud-datastore


【解决方案1】:

App Engine 有自己的标识符分配策略。你可能没问题。在 ID 上存在more control 的 API,但您很可能不需要担心它们,除非您的要求不寻常。

【讨论】:

    【解决方案2】:

    他们将 id 的默认分配策略更改为分散 (http://googlecloudplatform.blogspot.com/2013/05/update-on-datastore-auto-ids.html)。您可以像这样为 dev_appserver 覆盖它:

    dev_appserver.py --auto_id_policy=sequential

    更多在开发服务器页面的“指定自动 ID 分配策略”部分:https://cloud.google.com/appengine/docs/python/tools/devserver

    但就像@dyoo 所说,没有什么可担心的,但您可以在本地测试期间更换为更轻松的眼球查找。

    【讨论】:

    • 您可以请求覆盖,但随后您将撤消性能优化。如果您对顺序 ID 的需求很强烈,那么就采用这种方式,但要花时间了解权衡取舍。
    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 2011-12-12
    • 2019-10-17
    • 1970-01-01
    • 2022-11-14
    • 2022-12-01
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多