使用批量加载程序上传包含父项的实体 [英] Uploading entity with parent using bulkloader
问题描述
我有一个客户实体:
$ 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屋!