【发布时间】:2021-06-28 18:30:20
【问题描述】:
我已将第 1 代 GAE Python 2 应用程序迁移到第 2 代 GAE Python 3。这并不容易,但似乎一切正常。
我现在想从 google-cloud-ndb 迁移到 google-cloud-datastore。使用 google-cloud-datastore,是否可以以类似于子类化 ndb.Model 的方式子类化 Entity(这是一个 dict 子类)?
例如 google-cloud-ndb 代码如下所示:
from google.cloud import ndb
class Foo(ndb.Model):
x = ndb.StringProperty(default='42')
def do_something(self):
pass
这是将上述内容迁移到 google-cloud-datastore 的正确方法吗?:
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']) 访问?这将使迁移变得更加容易。
【问题讨论】:
-
您好,您有机会通过以下代码实验室吗?步骤 5 项目符号 3 分享了一些关于如何从 Cloud ndb 迁移到数据存储的好信息。 codelabs.developers.google.com/codelabs/…
-
@AntonioRamirez,是的,我在提问之前读过。
-
正在解决这个问题但没有确定解决方案的项目:datastore-entity 和 datastore-orm
-
我怀疑 google.cloud.datastore.entity.Entity 并不是要扩展的。过去几年,google-cloud-* 产品的 API 稳定性非常不稳定,因此我建议谨慎行事。
标签: google-app-engine google-cloud-datastore google-app-engine-python