Я хотел бы изменить обмены действиями и сохранить активность обратно в базу данных.
Можно изменить другие аспекты деятельности, как и его название:
some_act['name'] = "some new name"
, а затем сохранить активность с: some_act.save()
Также можно изменить обмены таким же образом:
some_exc['scale"] = 0.5
и затем сохранить обмен с:
some_exc.save()
Brightway2: Изменение/удаление обменов из активности без использования активности как dict
Однако, единственный способ, которым я нашел, чтобы добавить/удалить обмены с определенной деятельности, чтобы пройти через dictionary version
деятельности:
some_act_dataset = some_act._data
some_act_dataset['exchanges'] = [{exchange1}, {exchange2}] # exc must be valid exchange dict
Проблема заключается в том, что я не знаю, как сохранить новый вид деятельности (как Словаре) обратно в базу данных.
some_act_dataset.save()
не работает, так как словари не имеют метода save
. Database("my_database").write(some_act_dataset)
перезаписывает все остальные данные в базе данных.
я мог бы работать в нагруженном базе:
loaded_db = Database("my_database").load()
и внести изменения, мне нужно в результирующем словаре, а затем записать всю базу данных, но когда базы данных являются большими, это похоже на дорогостоящую операцию.
Итак, вопрос в том, есть ли способ изменить обмен активности и сохранить активность обратно в базу данных без необходимости переписывать всю базу данных?