Problema del cargador masivo de Google App Engine al usar la configuración y entidades autogeneradas de yaml con ID numérico
Mi aplicación usaDjango no rel. No tengo acceso al modelo.
Yo tengo mibulkloader.yaml
archivo generado automáticamente porappcfg.py create_bulkloader_config
.
El problema es que las ID numéricas de las entidades se importan como nombres de clave de cadena. Entonces, si exporto una entidad con ID de int, por ejemplo,'62', se importa como entidad con el nombre de clave de cadena de'61' que fastidia a Django.
Fragmento revelador bulkloader.yaml:
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
Estoy tratando de configurar la descarga / carga de datos od usando el cargador masivo, y quiero tener datos con un formato fácil de entender (como .csv) --- así que usandobulkloader.py --dump (...)
no es una opción viable ya que me da archivos sqlite3 que tienen contenidos de entidades encurtidos como una sola fila.
Intenté hacer lo que @Nick sugirió y obtuve una excepción:
ErrorOnTransform: Numeric keys are not supported on input at this time.
¿Significa esto que tengo que apegarme a bulkloader.py (que usa ese formato sqlite werid) o me equivoqué? ;)
Encabezado del transformador:
- 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)
Todo 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.')