【发布时间】:2012-02-25 09:33:57
【问题描述】:
我需要保留如下数据:
field1value=SomeStringValue
field1score=10
field2value=SomeOtherValue
field2score=20
...
fieldNvalue=SomeNValue
fieldNscore=N
即我有 N 个字段,每个字段都有自己的名称、存储在那里的值和分数。如何在 GAE 数据存储中正确存储此类数据?数据应该可以通过字段名称轻松访问。我还需要计算最终分数 (field1score + field1score + ... + fieldNscore)。
N 在 100 左右,数据库中的记录总数会很大。
更新。我使用了以下方法,但看起来它不是最好的:
class User(db.Model):
field_names = db.StringListProperty()
field_values = db.StringListProperty()
field_scores = db.ListProperty(int)
score_value = db.IntegerProperty()
def fields_add(user_key_name, field_name, field_value, field_score):
user = User.get(user_key_name)
if user:
field_names = user.field_names
field_values = user.field_values
field_scores = user.field_scores
if field_name in user.field_names:
field_index = user.field_names.index(field_name)
field_values[field_index] = field_value
field_scores[field_index] = field_score
else:
field_names.append(field_name)
field_values.append(field_value)
field_scores.append(field_score)
user.field_names = field_names
user.field_values = field_values
user.field_scores = field_scores
# TODO: update user.score_value
user.put()
【问题讨论】:
标签: google-app-engine google-cloud-datastore