Brightway2: Modificación / eliminación de intercambios de la actividad sin usar la actividad como dict
Me gustaría modificar los intercambios de una actividad y guardar la actividad nuevamente en la base de datos.
Es posible cambiar otros aspectos de la actividad, como su nombre:some_act['name'] = "some new name"
y luego guarde la actividad con:some_act.save()
También es posible modificar intercambios de la misma manera:some_exc['scale"] = 0.5
y luego guarde el intercambio con:some_exc.save()
Sin embargo, la única forma en que he encontrado agregar / eliminar intercambios de una actividad específica es a través dedictionary version
de la actividad:
some_act_dataset = some_act._data
some_act_dataset['exchanges'] = [{exchange1}, {exchange2}] # exc must be valid exchange dict
El problema es que no sé cómo guardar la nueva actividad (como dict) de nuevo en la base de datos.some_act_dataset.save()
no funciona, ya que los diccionarios no tienensave
método.Database("my_database").write(some_act_dataset)
sobrescribe todos los demás datos en la base de datos.
Podría trabajar en la base de datos cargada:loaded_db = Database("my_database").load()
y hacer los cambios que necesito en el diccionario resultante, y luego escribir toda la base de datos, pero cuando las bases de datos son grandes, esto parece una operación costosa.
Entonces, la pregunta es: ¿hay alguna manera de modificar los intercambios de una actividad y guardar la actividad nuevamente en la base de datos sin necesidad de sobrescribir toda la base de datos?