首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有google-cloud-datastore的子类实体

具有google-cloud-datastore的子类实体
EN

Stack Overflow用户
提问于 2021-04-02 02:40:25
回答 1查看 57关注 0票数 1

我已经将第一代GAE Python 2应用程序迁移到第二代GAE Python 3。这并不容易,但似乎一切正常。

现在我想从google-cloud-ndb迁移到google-cloud-datastore。使用google-cloud-datastore,是否可以用类似于ndb.Model子类化的方式来子类化Entity (这是一个dict子类

例如,google-cloud-ndb代码如下所示:

代码语言:javascript
复制
from google.cloud import ndb

class Foo(ndb.Model):
    x = ndb.StringProperty(default='42')

    def do_something(self):
        pass

这是将上述数据迁移到google-cloud-datastore的正确方法吗?:

代码语言:javascript
复制
from google.cloud.datastore.entity import Entity

class Foo(Entity):

    def __init__(self):
        super().__init__()
        self['x'] = '42'

    def do_something(self):
        pass

我还没有见过这样的示例代码,所以我想确认这是一个很好的实践,特别是在覆盖__init__的情况下。

更好的是,有没有一种方法可以子类化实体,这样我就可以作为对象属性(foo.x)而不是作为字典(foo['x'])来访问数据?这将使迁移变得更加容易。

EN

回答 1

Stack Overflow用户

发布于 2021-04-03 00:28:58

我怀疑我的问题中的解决方案不是一个好的解决方案,这样的解决方案会更好:

代码语言:javascript
复制
from google.cloud.datastore.entity import Entity

class Foo():

    x: str

    def __init__(self):
        super().__init__()
        self.x = '42'

    def do_something(self):
        pass

    def to_dict(self):
        return {'x': self.x}

    @staticmethod
    def from_dict(self, data):
        f = Foo()
        f.x = data['x']
        return f

如果能从已经经历过这件事的人那里得到反馈,那就太好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66909924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档