我的应用程序使用Django non-rel。我无权访问模型。
我的bulkloader.yaml
文件由appcfg.py create_bulkloader_config
.
问题是实体数字 ID 被导入为字符串键名。因此,如果我导出具有 int ID 的实体,例如'62',它将被导入为字符串键名称为'61' 的实体,这会搞砸 Django。
相关 bulkloader.yaml 片段:
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
我正在尝试使用bulkloader设置下载/上传od数据,并且我希望数据格式易于理解(如.csv)---因此使用bulkloader.py --dump (...)
不是一个可行的选择,因为它为我提供了具有实体内容的sqlite3文件腌制为一排。
编辑
我尝试按照@Nick 的建议进行操作,但遇到了异常:
ErrorOnTransform: Numeric keys are not supported on input at this time.
这是否意味着我必须坚持使用 bulkloader.py(使用那种奇怪的 sqlite 格式)或者我搞砸了什么?;)
变压器头:
- kind: auth_user
connector: csv
connector_options:
encoding: utf-8
skip_import_header_row: True
print_export_header_row: True
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
import_transform: transform.create_foreign_key('auth_user', key_is_id=True)
整个堆栈跟踪:
Traceback (most recent call last):
File "/opt/google/appengine/google/appengine/tools/adaptive_thread_pool.py", line 150, in WorkOnItems
status, instruction = item.PerformWork(self.__thread_pool)
File "/opt/google/appengine/google/appengine/tools/bulkloader.py", line 693, in PerformWork
transfer_time = self._TransferItem(thread_pool)
File "/opt/google/appengine/google/appengine/tools/bulkloader.py", line 848, in _TransferItem
self.content = self.request_manager.EncodeContent(self.rows)
File "/opt/google/appengine/google/appengine/tools/bulkloader.py", line 1269, in EncodeContent
entity = loader.create_entity(values, key_name=key, parent=parent)
File "/opt/google/appengine/google/appengine/ext/bulkload/bulkloader_config.py", line 385, in create_entity
return self.dict_to_entity(input_dict, self.bulkload_state)
File "/opt/google/appengine/google/appengine/ext/bulkload/bulkloader_config.py", line 131, in dict_to_entity
instance = self.__create_instance(input_dict, bulkload_state_copy)
File "/opt/google/appengine/google/appengine/ext/bulkload/bulkloader_config.py", line 209, in __create_instance
'Numeric keys are not supported on input at this time.')