如何使用appcfg.py将重复的属性上传到ndb数据存储区

时间:2013-01-14 18:27:15

标签: google-app-engine app-engine-ndb bulkloader

我一直非常成功地使用appcfg.py来upload_data,但我不确定如何在bulkloader.yaml中为重复属性设置导入转换或如何构建CSV。例如:

在一个看起来像这样的帖子模型中:

class Post(models.Model):
  tags = ndb.StringProperty(repeated=True)

bulkloader.yaml看起来像这样:

transformers:
- kind: Post
  connector: csv

  property_map:
    - property: __key__
      external_name: key
      export_transform: transform.key_id_or_name_as_string
    - property: tags
      external_name: tags
      import_transform: ???

import_transform正确的API注册吗?或者还有其他方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我尝试过使用import_transform的两步法。首先创建一个模块(本质上是一个自定义转换文件),比如说bulkmodify.py。然后在bulkmodify中定义一个转换,将输入值转换为列表

def list_convert(value):
    output=[value]
    return output

然后在bulkloader.yaml文件中指定重复属性的导入转换:

import_transform: bulkmodify.list_convert

另外,请不要忘记将模块包含在bulkloader.yaml文件顶部的导入列表中。

- import: bulkmodify

在我的输入CSV中,数据采用多个引号构成,因此批量加载程序将它们作为包含多个列出值的单个属性引入

key,"""tag1"",""tag2"",""tag3""", property3, etc.