python - GAE 在不使用 CSV 的情况下将数据加载到数据存储中

标签 python google-app-engine

我已经使用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/

相关文章:

java - 按键查询谷歌数据存储并按另一个属性排序

python - 如何找出 Google App Engine 上某个域名的 IP 地址?

java - 如何在 GAE 中存储和检索 (_sh_SESSION) 值

python - 在 Pandas 数据框中将单个列向前移动几个日期

python - 如何使用 read() 函数跳过 python 中的第一行?

python - 在 python openCV 的网络摄像头视频上选择静态 ROI

Python初始化器

python - 导入错误 : No module named books. 型号

google-app-engine - 为什么 Google Appengine 中没有唯一约束?

android - 从 Android 设备消费时的 Google API 安全性