2

因此,我正在尝试使用 bulkloader 创建一个具有父级的实体。

我有一个客户实体:

class Client(db.Model):
    identifier = db.StringProperty()
    www_ip = db.StringProperty()
    local_ip = db.StringProperty()
    status=db.BooleanProperty()

我想创建一个数据实体作为客户的孩子。

class Data(db.Model):
    songscount = db.IntegerProperty()
    nextorder = db.IntegerProperty(default=1)
    players = db.ListProperty(str)
    previousplayer = db.StringProperty()

客户实体存在。Data.yaml 是(无序言):

transformers:
- kind: Data
  connector: csv
  connector_options:
    # TODO: Add connector options here--these are specific to each connector.
  property_map:
    - property: __key__
      external_name: key
      import_transform: transform.create_deep_key(('Client', '__key__'), ('Data', transform.CURRENT_PROPERTY))
      export_transform: transform.key_id_or_name_as_string

    - property: nextorder
      external_name: nextorder
      import_transform: transform.none_if_empty(int)

    - property: players
      external_name: players
      import_transform: transform.none_if_empty(users.User)  # Assumes email address

    - property: previousplayer
      external_name: previousplayer
      import_transform: transform.none_if_empty(users.User)  # Assumes email address

    - property: songscount
      external_name: songscount
      import_transform: transform.none_if_empty(int)

我知道需要使用 transform.create_foreign_key 或 transform.create_deep_key 。我不明白的是如何告知我的客户实体(它是父实体)。

我发现一个这样的问题讨论了如何在 Google App Engine 上的 appcfg.py 批量加载数据期间为数据存储实体设置父级?,但“代码配置”已被弃用。

谢谢

4

1 回答 1

2

老问题,但供将来参考,答案似乎在这里:

    - property: __key__
      external_name: key
      import_transform: transform.create_deep_key(('clientKey‘, ‘clientKey‘),(’key‘, transform.CURRENT_PROPERTY))
      export:
      - external_name: clientKey
        export_transform: transform.key_id_or_name_as_string_n(0)
      - external_name: key
        export_transform: transform.key_id_or_name_as_string_n(1)

(改编自http://longsystemit.com/javablog/?p=23

于 2013-03-12T04:12:09.833 回答