¿Error de registro de migración de blob?

Desafortunadamente, cometí el error de almacenar mis claves de blob en el almacén de datos y, por lo tanto, necesito migrarlas yo mismo.

Estoy usando el documento de migración Master-Slave to HRD:

https://developers.google.com/appengine/docs/adminconsole/migration

Al final, mencionan lo siguiente para obtener las nuevas claves:

from google.appengine.ext import blobstore

def GetNewBlobKey(old_key)
  return blobstore.BlobMigrationRecord.get_new_blob_key(old_key)

Hago exactamente lo anterior pero obtengo el siguiente error:

'module' object has no attribute 'BlobMigrationRecord'
Traceback (most recent call last):
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__
    rv = self.handle_exception(request, response, e)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__
    rv = self.router.dispatch(request, response)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__
    return handler.dispatch()
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
    return method(*args, **kwargs)
  File "/base/data/home/apps/1.359990895908922231/main.py", line 1302, in post
    userEntity.imageUrlBlobKey = blobstore.BlobMigrationRecord.get_new_blob_key(userEntity.imageUrlBlobKey)
AttributeError: 'module' object has no attribute 'BlobMigrationRecord'

Cualquier ayuda sería muy apreciada

preguntado el 30 de junio de 12 a las 16:06

¿Qué versión del SDK estás usando? -

usando 1.7.0 que es el último -

1 Respuestas

Se dejó por error fuera de la versión 1.7.0. Estará en la versión 1.7.1, hasta entonces puedes usar este código en tu aplicación:

class BlobMigrationRecord(db.Model):
  """A model that records the result of a blob migration."""

  new_blob_key = BlobReferenceProperty(indexed=False)

  @classmethod
  def kind(cls):
    return blobstore.BLOB_MIGRATION_KIND

  @classmethod
  def get_by_blob_key(cls, old_blob_key):
    """Fetches the BlobMigrationRecord for the given blob key.

    Args:
      old_blob_key: The blob key used in the previous app.

    Returns:
      A instance of blobstore.BlobMigrationRecord or None
    """
    return cls.get_by_key_name(str(old_blob_key))

  @classmethod
  def get_new_blob_key(cls, old_blob_key):
    """Looks up the new key for a blob.

    Args:
      old_blob_key: The original blob key.

    Returns:
      The blobstore.BlobKey of the migrated blob.
    """
    record = cls.get_by_blob_key(old_blob_key)
    if record:
      return record.new_blob_key.key()

Tenga en cuenta que esto difiere ligeramente de lo que se incluirá en la versión 1.7.1. Específicamente, la propiedad "new_blob_key" se denominará "new_blob_ref" (1.7.1 también corrige un error al anular el nombre de la propiedad para BlobReferenceProperty).

Respondido 09 Jul 12, 18:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.