GAE-NDB中涉及ComputedProperty的读写操作

2024-04-20 13:16:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用GAE NDB python2.7
我的两款车型代码:

class A(ndb.Model): 
    def X(self, value): 
        :: # some statements to return a value 
        return range 
    def Y(self, value): 
        :: # some statements to return a value 
        return range 
    def Z(self, value): 
        :: # some statements to return a value 
        return range 

    property_1 = ndb.IntegerProperty(default=0, indexed=False) 
    property_2 = ndb.IntegerProperty(default=0, indexed=False) 
    property_3 = ndb.IntegerProperty(default=0, indexed=False) 
    property_4 = ndb.IntegerProperty(indexed=False) 
    # Computed values 
    computed_property_1 = ndb.ComputedProperty(lambda e: e.X(e.property_1)) 
    computed_property_2 = ndb.ComputedProperty(lambda e: e.Y(e.property_2)) 
    computed_property_3 = ndb.ComputedProperty(lambda e: e.Z(e.property_3)) 
    date_added = ndb.DateTimeProperty(auto_now_add=True, indexed=False) 
    date_modified = ndb.DateTimeProperty(auto_now=True, indexed=False) 

class B(ndb.Model): 
    property_5 = ndb.IntegerProperty() 
    property_6 = ndb.StructuredProperty(A) 
    date_added = ndb.DateTimeProperty(auto_now_add=True, indexed=False) 
    date_modified = ndb.DateTimeProperty(auto_now=True, indexed=False) 

我的查询代码:

^{pr2}$

当我对模型B的实体执行上述查询时,会执行任何写操作吗?(尤其是ComputedProperty和DateTimeProperty(带有“auto帴now”)属性)

如果是的话,是否会限制在每秒1次写入(我认为这是免费应用程序的限制)

如果是,并且如果我有50个实体匹配查询,它会在完成查询并返回匹配的实体集(任何查询完成时间的估计值)之前先完成写操作(上面提到的)

如果我在B班换下一行,以上答案有什么不同吗

property_6 = ndb.StructuredProperty(A)  

property_6 = ndb.StructuredProperty(A, repeated=True)  

Tags: selffalsetrueautodatereturnvaluedef
1条回答
网友
1楼 · 发布于 2024-04-20 13:16:14

执行查询时没有写入操作。这同样适用于结构属性为StructuredProperty的两个变体。另外,auto_now_add和{}只在写操作期间设置。我不是百分之百确定,但据我所知,计算属性在写入时也会更新(我还没有使用它们)。在

相关问题 更多 >