我已经使用bulkloader.Loader将内容加载到GAE开发和实时数据存储中,但我的下一步是从非CSV数据创建对象并将其推送到数据存储中。
所以说我的对象是这样的:
class CainEvent(db.Model):
name =db.StringProperty(required=True)
birthdate = db.DateProperty()
谁能给我一个简单的例子来说明如何做到这一点?
最佳答案
以下是我们使用批量加载器加载 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
方法生成的字符串列表必须与您在初始化加载程序时提供的“属性”列表(在长度和顺序上)匹配(即,第二个参数this example 中的 AlbumLoader.__init__
方法)。
这种方法实际上提供了很大的灵 active :我们重写 JSONLoader
实现上的 __init__
方法,并自动确定 kind
我们正在加载的模型及其要提供给 bulkloader.Loader
父类的属性列表。
关于python - GAE 在不使用 CSV 的情况下将数据加载到数据存储中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1422270/