在google-apps-engine

时间:2018-05-31 18:32:23

标签: python google-app-engine url google-cloud-datastore url-parameters

我创建了一个符合留言板教程的数据存储对象:

class myDS(ndb.Model):
    a = ndb.StringProperty(indexed=True)

我有一个处理程序来访问它并更新是:

class Handler1:

    my_ds = myDS()
    my_ds.a = "abc" #Trying to update the value

class Handler2:
    my_ds = myDS()
    self.response.write(my_ds.a) #prints None although I changed the value in Handlers1

def main():
   application = webapp.WSGIApplication([
           ('/set',   Handler1),
           ('/get',   Handler2])

我打电话:

Myapp.com/set 
Myapp.com/get : Prints None (Didn't update to "abc")

为什么不更新的价值? 如何更新处理程序?

1 个答案:

答案 0 :(得分:0)

云数据存储区(GCD)stores data objects as entities,可能包含一个或多个属性。在您的情况下,属性值类型是一个字符串' abc'。但是,每个实体都由一个密钥标识,该密钥是应用程序数据存储区中的唯一标识符。

因此,在您的情况下,您需要为对象my_ds创建一个键,并定义一个模型类。这可能是Handler1(例如class Handler1(ndb.Model): #your code),它定义了您要调用的属性。

此外,如果不使用put()函数(例如my_ds.put()),则无法更新值。为了使用第二个处理程序(Handler2)来创建新对象并设置属性的值,您需要更多地了解使用Webapp2 request handler

我还建议您按照tutorial to get started进行操作。