Mi aplicación usa Django non-rel. No tengo acceso al modelo.Problema del cargador masivo de Google App Engine al usar la configuración autogenerada yam y entidades con ID numérico
Tengo mi archivo bulkloader.yaml
autogenerado por appcfg.py create_bulkloader_config
.
El problema es que las entidades ID numéricas se importan como nombres de clave de cadena. Por lo tanto, si exporto una entidad con ID int de, por ejemplo, '62', se importa como entidad con el nombre de clave de cadena '61' que daña Django.
Revelant Fragmento bulkloader.yaml:
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
estoy tratando de datos od de carga descarga de instalación/uso bulkloader, y yo quiero tener datos mientras que el formato fácil de entender (como CSV) - - Así que usar bulkloader.py --dump (...)
no es una opción viable ya que me da archivos sqlite3 que tienen contenido de entidades en escabeche como una sola fila.
EDITAR
He intentado hacer lo que sugirió @ Nick y yo tiene una excepción:
ErrorOnTransform: Numeric keys are not supported on input at this time.
¿Quiere decir esto que tengo que se adhieren a bulkloader.py (que utiliza ese formato SQLite werid) o ¿Metí la pata algo? ;)
cabecera 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)
entero 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.')
Gracias por la respuesta. Mi problema es con la clave principal, ¿es el nombre de la función 'create_foreign_key' engañoso? –
El nombre es engañoso: probablemente debería ser simplemente 'create_key'. –
OK :) ¡Lo intentaré lo antes posible! –