Ứng dụng của tôi sử dụng Django non-rel. Tôi không có quyền truy cập vào mô hình.Vấn đề bộ tải Bulk Engine của Google App khi sử dụng cấu hình tự động yaml và các thực thể có ID số
Tôi có tệp bulkloader.yaml
được tự động phát hiện bởi appcfg.py create_bulkloader_config
.
Sự cố là các thực thể ID số đang được nhập dưới dạng tên khóa chuỗi. Vì vậy, nếu tôi xuất thực thể có ID int, ví dụ: '62', nó sẽ được nhập dưới dạng thực thể có tên khóa chuỗi là '61' có đinh vít lên Django.
Revelant bulkloader.yaml Fragment:
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
Tôi đang cố gắng để thiết lập download/upload dữ liệu od sử dụng bulkloader, và tôi muốn có dữ liệu như dễ hiểu định dạng (như .csv) - - do đó, việc sử dụng bulkloader.py --dump (...)
không phải là tùy chọn khả thi vì nó cung cấp cho tôi các tệp sqlite3 có nội dung thực thể được chọn làm một hàng.
EDIT
tôi đã cố gắng làm những gì @Nick đề nghị và tôi đã nhận một ngoại lệ:
ErrorOnTransform: Numeric keys are not supported on input at this time.
Điều này có nghĩa rằng tôi phải dính vào bulkloader.py (có sử dụng rằng định dạng sqlite werid) hoặc Tôi đã làm điều gì đó? ;)
Tiêu đề của Transformer:
- 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)
Tổng stacktrace:
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.')
Cảm ơn cho câu trả lời. Vấn đề của tôi là với khóa chính, chỉ là tên của hàm 'create_foreign_key' gây hiểu nhầm? –
Tên gây hiểu nhầm - có lẽ chỉ đơn giản là 'create_key'. –
OK :) Tôi sẽ thử ASAP! –