我们如何用此活动中已存在的技术圈交换来替换活动中的生产交换?
在活动act
中,我尝试删除现有的生产交换existing_prod_exc
,然后使用new_prod_exc=act.new_exchange(input=act.key,output=act.key,type='production')
创建新的生产交换,但我不知道如何“将“现有交换techno_exc
的所有交换特征”复制到new_prod_exc
。
感谢您的帮助。
答案 0 :(得分:2)
更改交换类型可以通过多种方式完成;你可以直接编辑SQLite数据库中的type
列,或者使用ExchangeDataset
对象,但我想你想使用主界面。在这种情况下,更改交换类型很简单:
some_exc = next(iter(some_activity.technosphere()))
some_exc['type'] = 'production'
some_exc.save()
回想一下,输入和输出之间的唯一区别是sign of the value in the technosphere matrix;你可以通过将交换金额的符号乘以-1来完成同样的事情。
我想你也想删除现有的生产交换(你应该先这样做,原因很明显!):
for exc in some_activity.production():
exc.delete()
与任何破坏性操作一样,最好先在实际数据的副本上进行尝试;您可以使用projects.copy_project()
快速创建测试项目。
答案 1 :(得分:2)
您可以直接更改您感兴趣的交易所并保存:
import sys, pdb; pdb.Pdb(stdout=sys.__stdout__).set_trace()
这样做会导致两次生产交换。然后,您可以根据需要删除现有的生产交换。