当前位置:  开发笔记 > 编程语言 > 正文

Google App Engine模型类是如何存储的?

如何解决《GoogleAppEngine模型类是如何存储的?》经验,为你挑选了1个好方法。

我怀疑对象是如何存储的.假设我有一个类定义如下:

class SomeEntity(db.Model):
    some_number = db.IntegerProperty(required=True)

    def calculate_something(self):
        return self.some_number * 2

我的猜测是,数据存储中唯一存储的是名称/值/类型some_number以及类(SomeEntity)的完全限定名称.但是,我没有偶然发现任何证实这一点的信息.

1)任何人都可以证实吗?

我想确认我可以更改(并添加/删除)方法,而不会以某种方式影响存储的数据.

2)此外,如果我向类添加一个新属性(以及该属性有什么),现有对象会发生什么required=true



1> David Underh..:

实体以protobuf表示形式存储在数据存储区中(包括其密钥 - 包括您的App ID和实体的Kind).该数据存储区写入的生命文章更多地谈论实体的代表,以及它们如何被写入到数据存储.有关更多详细信息,请查看本系列的其余文章.

1)方法与您的实体存储的数据无关,因此您可以添加/删除/更改这些数据,而不会影响数据的表示.

2)数据存储是无模式的(与典型的SQL数据库不同).更改您Model对数据存储区中的数据完全没有影响.检索现有实体时,如果缺少某个required字段,则会引发错误.或者,如果您不需要它并提供默认值,则默认值将用于缺少的字段.

如果您需要将旧模型迁移到新模型,您可能需要考虑使用appengine-mapreduce库迭代所有实体并单独迁移每个实体.了解更多关于模式迁移这里.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有