代码之家  ›  专栏  ›  技术社区  ›  Dominic Bou-Samra

在GAE中存储对象列表

  •  2
  • Dominic Bou-Samra  · 技术社区  · 15 年前

    我需要存储一些看起来有点像这样的数据:

    xyz 123
    abc 456
    hij 678
    rer 838
    

    现在我只将它存储为传统的字符串和整数模型,并将其放入数据存储中。但是这些数据会定期变化,并且只在作为一个集合来看时才具有相关性。因此,它需要存储为一个列表或一个对象列表,据我所知,这两个列表都不可能真正做到不酸洗。有人能帮忙吗?即使将其存储为文本文件也可能有效:s

    编辑:我似乎对细节有点含糊其辞。

    我正在从外部源(通过beautifulsoup/http2lib(如果重要的话)采集一些数据。然后需要将这些数据作为一个整体存储,因为它将绘制在一个图表上。数据变化(但不经常——可能一周一次)。由于数据集非常简单(从字面上看,一个字符串字段和一个整数),我认为将它们存储为列表列表比较容易,然后将它们实际存储在模型中。我有种感觉,我忽略了一个更简单的解决方案,因为我过于关注数据需要作为一个大的块存储在一起这一事实。

    我将一次存储500多个这些位的数据作为一个组。

    2 回复  |  直到 15 年前
        1
  •  1
  •   balpha    15 年前

    你可以把它们作为 两个单独的列表 只有当你真正接触到它们时才担心梳理它们。像这样:

    class MyModel(db.Model):
        my_strings = db.StringListProperty()
        my_ints = db.ListProperty(int)
    
        def get_data(self):
            return zip(self.my_strings, self.my_ints)
    
        def set_data(self, data):
            self.my_strings = [element[0] for element in data]
            self.my_ints = [element[1] for element in data]
    
        data = property(get_data, set_data)
    

    这样,你就可以做

    entity = MyModel()
    entity.data = [("xyz", 123), ("abc", 456), ("hij", 678)]
    entity.put()
    
    # ...
    
    for string_value, int_value in entity.data:
        # do something
    
        2
  •  0
  •   spieden    15 年前

    如果它真的只是一个tuples/two“columns”的列表,您可以使用交替列表和listproperty吗?如果数据具有一致的维度、很小并且不需要索引,这就很好了。

    例如,要对您在列表中给出的示例进行编码,请执行以下操作:

    # i forget if mixed types are allowed, but you get the idea.
    ["xyz", 123, "abc", 456, "hij", 678, "rer", 838]