1

私はこれを行うための適切な方法は何であるか疑問に思っています。floatを含むデータベースがあり、データベース内のすべてのfloatの合計を取得しようとしています。

例:

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()をいじってみましたが、値の合計またはリストを取得できませんでした。

4

2 に答える 2

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)
于 2012-12-06T05:58:29.517 に答える
0

mapreduceパイプラインを使用すると、任意の大きなエンティティ間で簡単に合計できます: https ://developers.google.com/appengine/docs/python/dataprocessing/overview

マッパーを作成して、必要なものを合計するだけです。

于 2012-12-09T16:10:13.063 に答える