使用批量加载程序上传包含父项的实体 [英] Uploading entity with parent using bulkloader

查看:124
本文介绍了使用批量加载程序上传包含父项的实体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有一个客户实体:


$ b $所以,我试图用一个使用bulkloader的父代创建一个实体。 b

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

我想创建一个(b.Model):
songscount = db.InteProProperty()。

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

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

pre code变形金刚
- kind数据
连接器:csv
connector_options:
#TODO:在此处添加连接器选项 - 这些是特定于每个连接器的。
property_map:
- property:__key__ $ b $ external_name:key
import_transform:transform.create_deep_key(('Client','__key__'),('Data',transform.CURRENT_PROPERTY) )
export_transform:transform.key_id_or_name_as_string

- 属性:nextorder
external_name:nextorder
import_transform:transform.none_if_empty(int)

- 属性:玩家
external_name:玩家
import_transform:transform.none_if_empty(users.User)#假设电子邮件地址

- 属性:previousplayer
external_name:previousplayer
import_transform:transform.none_if_empty(users.User)#假设电子邮件地址

- 属性:songscount
external_name:songscount
import_transform:transform.none_if_empty(int)

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



我发现讨论了一个这样的问题,但'代码配置'已被弃用。



谢谢 解决方案

老问题,但为了将来的参考,它的答案似乎在这里:

   - 属性:__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_a s_string_n(1)

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

So, I am trying to create an entity with a parent using bulkloader.

I have a Client entity:

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

And I want to create a Data entiy as child of Client.

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

Client entity exists. Data.yaml is (without preamble):

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)

I understand that either transform.create_foreign_key or transform.create_deep_key needs to be used. What I dont understand is how to inform about my Client entity (which is parent).

I found one such question discussed How to set parent for datastrore entity during bulkloading data by appcfg.py on Google App Engine? , but 'Code configuration' has been deprecated.

Thanks

解决方案

Old question, but for future reference, it seems the answer is here:

    - 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)

(adapted from http://longsystemit.com/javablog/?p=23)

这篇关于使用批量加载程序上传包含父项的实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆