根据AppEngine文档 (以下引用),使用download_data和upload_data应该保留下载数据的原始密钥。
下载数据时,实体与其原始密钥一起存储。当数据上传时,将使用原始密钥。如果数据存储中存在一个实体,其密钥与正在上载的实体相同,则将替换该数据存储中的实体。
我使用这两个命令:
appcfg.py download_data --oauth2 --url=https://myapp-id.appspot.com/_ah/remote_api --filename=testdata/gamedata
appcfg.py upload_data --url=http://localhost:9876/_ah/remote_api --filename=testdata/gamedata数据上传的I相同,但密钥不同,知道我做错了什么吗?或者,在本地devappserver中,密钥的计算方式是否不同?
更新
添加一些数据来比较prod和本地dev版本。
生产密钥:ag9zfmF3ZXNvbWVzdGdhbWVyGAsSCENhdGVnb3J5IgrYo9is2YbYqNmKDA
在download_data从PROD和upload_data到localhost之后,键就变成了同一个对象:ahFkZXZ-YXdlc29tZXN0Z2FtZXIYCxIIQ2F0ZWdvcnkiCtij2KzZhtio2YoM
发布于 2013-06-25 18:20:38
您需要在大容量加载器配置中使用适当的转换,例如,如果您使用if,则如下所示
- kind: YourEntity
connector: csv
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
import_transform: transform.none_if_empty(transform.create_foreign_key('YourEntity', key_is_id=True))
- property: more props...会在进进出出的路上转换钥匙。
如果你有父母的实体,那么你需要在离开的时候分开,然后在进去的路上重新组合:
- kind: ChildEntity
connector: csv
property_map:
- property: __key__
external_name: childKey
import_transform: transform.create_deep_key(('ParentEntity', 'parentKey', True),('ChildEntity', transform.CURRENT_PROPERTY, True))
export:
- external_name: parentKey
export_transform: transform.key_id_or_name_as_string_n(0)
- external_name: childKey
export_transform: transform.key_id_or_name_as_string_n(1)https://stackoverflow.com/questions/17267299
复制相似问题