我使用GAE NDB Python 2.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)
我的查询代码:
qry_1 = B.query(B.property_5==input_value) # or B.query(B.property_6.computed_property_2==input_value)
record_list = qry_1.fetch()
当我对模型B的实体执行上述查询时,是否会执行任何写操作? (特别是对于ComputedProperty和DateTimeProperty(具有“auto_now”)属性)
如果是,它的速率是否限制为每秒1次写入(我认为这是免费应用程序的限制)
如果是,如果我有50个与查询匹配的实体,它是否会在完成查询并返回匹配的实体集(任何估计的查询完成时间)之前首先完成写操作(如上所述)
如果我在B类中替换以下行,则上述答案有任何差异
property_6 = ndb.StructuredProperty(A)
带
property_6 = ndb.StructuredProperty(A, repeated=True)
答案 0 :(得分:0)
执行查询没有写入操作。这同样适用于StructuredProperty的两个变体。此外,auto_now_add
和auto_now
仅在写入操作期间设置。我不是百分百肯定,但据我了解文档,计算属性也会在写入时更新(我还没有使用它们)。