Brightway2: Modificando / excluindo trocas da atividade sem usar a atividade como ditado
Gostaria de modificar as trocas de uma atividade e salvar a atividade novamente no banco de dados.
É possível alterar outros aspectos da atividade, como o nome:some_act['name'] = "some new name"
e salve a atividade com:some_act.save()
Também é possível modificar trocas da mesma maneira:some_exc['scale"] = 0.5
e salve a troca com:some_exc.save()
No entanto, a única maneira que encontrei para adicionar / excluir trocas de uma atividade específica é passar pelodictionary version
da atividade:
some_act_dataset = some_act._data
some_act_dataset['exchanges'] = [{exchange1}, {exchange2}] # exc must be valid exchange dict
O problema é que não sei como salvar a nova atividade (como ditado) novamente no banco de dados.some_act_dataset.save()
não funciona, pois os dicionários não têm umsave
método.Database("my_database").write(some_act_dataset)
substitui todos os outros dados no banco de dados.
Eu poderia trabalhar no banco de dados carregado:loaded_db = Database("my_database").load()
e faça as alterações necessárias no dicionário resultante e, em seguida, escreva o banco de dados inteiro, mas quando os bancos de dados são grandes, isso parece uma operação cara.
Portanto, a questão é: existe uma maneira de modificar as trocas de uma atividade e salvar a atividade novamente no banco de dados sem a necessidade de sobrescrever o banco de dados inteiro?