我已经将第一代GAE Python 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'])来访问数据?这将使迁移变得更加容易。
发布于 2021-04-03 00:28:58
我怀疑我的问题中的解决方案不是一个好的解决方案,这样的解决方案会更好:
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如果能从已经经历过这件事的人那里得到反馈,那就太好了。
https://stackoverflow.com/questions/66909924
复制相似问题