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()

Leave a comment

Create a website or blog at WordPress.com

Up ↑