我已经使用bulkloader.Loader将内容加载到GAE开发和实时数据存储中,但我接下来要从非CSV数据创建对象并将其推送到数据存储区。
所以说我的对象是这样的:
class CainEvent(db.Model):
name =db.StringProperty(required=True)
birthdate = db.DateProperty()
有人能给我一个如何做到这一点的简单例子吗?
答案 0 :(得分:2)
以下是我们使用bulkloader加载JSON数据而不是CSV数据的极其简化示例:
class JSONLoader(bulkloader.Loader):
def generate_records(self, filename):
for item in json.load(open(filename)):
yield item['fields']
在这个例子中,我假设JSON格式看起来像
[
{
"fields": [
"a",
"b",
"c",
"d"
]
},
{
"fields": [
"e",
"f",
"g",
"h"
]
}
]
过于简单了。
基本上,您所要做的就是创建bulkloader.Loader的子类并实现(至少)generate_records
方法,这将产生字符串列表。这种策略适用于从XML文件或ROT13加密文件或其他任何内容加载数据。
请注意,generate_records
方法产生的字符串列表必须与初始化加载器时提供的“属性”列表(长度和顺序)匹配(即{{}的第二个参数1}} this example}中的方法。
这种方法实际上提供了很大的灵活性:我们在AlbumLoader.__init__
实现上覆盖__init__
方法并自动确定我们正在加载的模型的JSONLoader
及其列表要提供给kind
父类的属性。
答案 1 :(得分:0)
您可能会发现this post很有用 - 它详细说明了如何直接从RDBMS加载数据,但同样适用于从任何其他来源加载数据。