我只是想知道这样做的正确方法是什么。我有一个包含浮点数的数据库,我只是想获取数据库中所有浮点数的总和。
示例:
class Sum_DB(db.Model):
name_of_profile = db.StringProperty(required = True)
float_value= db.FloatProperty()
sum_me_up = db.GqlQuery("select * from Sum_DB WHERE name_of_profile =:1", profile_id)
如果有人可以帮我一把,我将不胜感激。我已经尝试过使用fetch(),但是无法获得值或值列表。
答案 0 :(得分:2)
很抱歉,如果我误解了,但听起来您想要从数据存储中检索一组实体并汇总各自的float_value
属性。如果这是你想要做的,你将需要设置一个查询来拉出所有有问题的实体(这里我们将只使用Sum_DB.all()
拉出所有这些实体),然后遍历返回的列表对象,总结他们的float_value
属性。例如:
class Sum_DB(db.Model):
name_of_profile = db.StringProperty(required = True)
float_value= db.FloatProperty()
class MainHandler(webapp2.RequestHandler):
def get(self, *args, **kwargs):
r = Sum_DB(name_of_profile='test1', float_value=float(1.2359))
s = Sum_DB(name_of_profile='test2', float_value=float(2.2355))
t = Sum_DB(name_of_profile='test3', float_value=float(4.2185))
r.put()
s.put()
t.put()
# Using the Query class
query = Sum_DB.all()
# You can now iterate over that 'query', with each element
# representing an entity from your datastore. Each entity
# will have the properties you defined in Sum_DB, so you
# can access them by name.
sum_me_up = sum(result.float_value for result in query)
# Or using GQL - the concept/result is the same
query2 = db.GqlQuery('SELECT * from Sum_DB')
sum_me_up2 = sum(result.float_value for result in query2)
self.response.out.write('Query: {0} | GQL: {1}'.format(sum_me_up,
sum_me_up2))
app = webapp2.WSGIApplication([
('/', MainHandler),
],
debug=True)
答案 1 :(得分:0)
mapreduce管道可以轻松地对任意大型实体求和: https://developers.google.com/appengine/docs/python/dataprocessing/overview
你只需编写一个mapper来总结你想要的东西。