Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正确使用GAE ndb.ComputedProperty_Python_Google App Engine_App Engine Ndb - Fatal编程技术网

Python 正确使用GAE ndb.ComputedProperty

Python 正确使用GAE ndb.ComputedProperty,python,google-app-engine,app-engine-ndb,Python,Google App Engine,App Engine Ndb,在我的GAE项目中,我有一类视频,我希望能够通过他们的分数进行搜索,即上升票减去下降票。我希望能够查询这个值,并希望以最有效的方式获取它。我认为,使用计算属性获取is是以下方式的最佳方式: class Video(ndb.Model): title = ndb.StringProperty(required = True) description = ndb.TextProperty() upvotes = ndb.IntegerProperty(required =

在我的GAE项目中,我有一类视频,我希望能够通过他们的分数进行搜索,即上升票减去下降票。我希望能够查询这个值,并希望以最有效的方式获取它。我认为,使用计算属性获取is是以下方式的最佳方式:

class Video(ndb.Model):
    title = ndb.StringProperty(required = True)
    description = ndb.TextProperty()

    upvotes = ndb.IntegerProperty(required = True)
    downvotes = ndb.IntegerProperty(required = True)
    score = ndb.ComputedProperty(lambda self: self.upvotes - self.downvotes)
但是我很好奇ComputedProperty是否有任何性能延迟?每次给出向上投票或向下投票时,只增加或减去分数值是否更有效?

对于简单的计算(如您的示例中的计算),应该不会有太大的性能阻力。是的,每次读取数据时都会运行计算,但首先构建结果集涉及的逻辑要多得多;一次减法不会影响任何事情

对于更复杂的计算,是的,可能会影响性能。

对于简单的计算(如您的示例中的计算),应该不会有太大的性能阻力。是的,每次读取数据时都会运行计算,但首先构建结果集涉及的逻辑要多得多;一次减法不会影响任何事情


对于更复杂的计算,是的,可能会影响性能。

好的,谢谢,这对我来说是一个更干净的解决方案,所以我希望它很好。只是一个小小的更正:计算属性只在写入时运行,而不是读取时运行@罗布柯蒂斯,这是不对的。“当实体从数据存储中读回时,将忽略存储的值;相反,只要请求该值,就会通过调用函数重新计算该值”@Amber,啊,我明白了,我已经太注意了警告:ComputedProperties不是在查询中计算的,而是在put()上计算的,但我现在看到了更多内容。谢谢你的更正!好的,很好,谢谢,这对我来说是一个更干净的解决方案,所以我希望它是好的。只是一个小的更正:计算属性只在写时运行,而不是在读时运行@罗布柯蒂斯,这是不对的。“当实体从数据存储中读回时,将忽略存储的值;相反,只要请求该值,就会通过调用函数重新计算该值”@Amber,啊,我明白了,我已经太注意了警告:ComputedProperties不是在查询中计算的,而是在put()上计算的,但我现在看到了更多内容。谢谢你的更正!它不是
lambda self
?它不是
lambda self