Como clonar entities en NDB – How to clone entites in NDB

Desde que Google App Engine publicó la nueva librería NDB para su DataStore noté que existía cierta carencia, por ejemplo, un método clone que nos permitiese clonar entidades.

Es bastante habitual, cuando te toca manejar datos y reajustar propiedades o valores, recuperar una entidad, y generar una nueva casi casi idéntica a la anterior, pero cambiando una o dos propiedades o valores de la misma, eliminar alguna propiedad, etc.

Cuando las entitdades a manejar tienen muchas propiedades el trabajo puede resultar muy tedioso, además de propenso a errores por copy&paste.

A continuación puedes ver una manera muy simple de clonar una entidad en NDB. [How to clone entities in NDB]

  # Recuperas la entity - get the entity.
  e = MyKind.get_by_id('c1bc21a47c3c4fef942a6adc465d0312')

  # Clonas la entity con su nuevo ID - Clone the entity with new ID/NAME.
  clone = MyKind(
                       id=str(uuid.uuid4()).lower().replace('-',''),
                       **e.to_dict())

  # Cambias la propiedad(es) - Change the property or properties.
  clone.my_property = 123456

  # Eliminas algunas propiedades - Delete some properties.
  delattr(clone, 'prop_to_del')
  delattr(clone, 'prop_a_borrar')

  # Grabamos nueva entity - Save new cloned entity
  clone.put()


Google+

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s