Google App Engine Bulkloader-Problem bei Verwendung von automatisch generierten yaml-Konfigurationen und Entitäten mit der numerischen ID

Meine Anwendung verwendetDjango non-rel. Ich habe keinen Zugriff auf das Modell.

Ich habe meinebulkloader.yaml Datei automatisch generiert vonappcfg.py create_bulkloader_config.

Problem ist, dass Entitäten mit numerischen IDs als String-Schlüsselnamen importiert werden. Wenn ich also eine Entität mit der int-ID von zum Beispiel @ exportie '62' wird als Entität mit dem String-Schlüsselnamen @ importie '61' das vermasselt Django.

Revelant bulkloader.yaml Fragment:

 property_map:
  - property: __key__
    external_name: key
    export_transform: transform.key_id_or_name_as_string

Ich versuche, das Herunterladen / Hochladen von Daten mit dem Bulkloader einzurichten, und ich möchte Daten in einem so einfach zu verstehenden Format (wie .csv) haben. Verwenden Sie also bulkloader.py --dump (...) ist keine praktikable Option, da es mir sqlite3-Dateien gibt, deren Entitätsinhalt in einer einzelnen Zeile zusammengefasst ist.

BEARBEITE

Ich habe versucht, das zu tun, was @Nick vorgeschlagen hat, und ich habe eine Ausnahme:

 ErrorOnTransform: Numeric keys are not supported on input at this time.

Bedeutet das, dass ich mich an bulkloader.py halten muss (das das werid sqlite-Format verwendet) oder habe ich etwas durcheinander gebracht? ;)

Header of 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) 

Whole 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.')

Antworten auf die Frage(4)

Ihre Antwort auf die Frage