0

这个问题与我之前提出的关于通过代理活动使用 Brightway 2 创建活动的问题有关。问题是:如果我决定删除我的代理活动,我应该修改交换表吗?

假设我决定在魁北克创建一个热泵,使用瑞士的热泵作为代理,但适应电力的来源。

#identify the activity supplying electricity from Quebec
for ds in Database('ei_33cutoff'):
   if ('market for electricity, low voltage' in ds['name']) &   (ds['location']=='CA-QC'):
       print(ds['name'])
       print(ds['code'])

elw_qc=Database('ei_33cutoff').get('44389eae7d62fa9d4ea9ea2b9fc2f609')

#identify the proxy activity
for ds in Database('ei_33cutoff'):
    if ('heat production, air-water' in ds['name']) & (ds['location']=='CH'):
       print(ds['name'],ds['location'],ds['code'])

hp_proxy=Database('ei_33cutoff').get('694d03f60920c0f7d964c08db1c67226')

#create a copy of the proxy
hp_qc=hp_proxy.copy()

#update location
hp_qc['location']='CA-QC'

#update electricity exchange
elect_to_hp = [exc for exc in hp_qc.technosphere() if 'electricity, low voltage' in exc['name']][0]
elect_to_hp['input']=elw_qc
elect_to_hp.save()

#store my new activity in the database

hp_qc.save()

但是,如果在此过程中我创建了一个包含错误的代理活动,或者由于其他原因我不再需要。我应该如何从包含错误的活动中“清理”数据库?hp_qc.delete() 就足够了吗?活动和交换存储在SQLite 数据库的不同表中。我想知道我是否用与不再存在的活动相关的交易所“污染”了交换表,这可能会在未来带来问题。

4

1 回答 1

1

调用Activity.delete()删除您的活动是消费者的所有交换,即所有传入交换。它不会删除其他活动消费您的参考产品的交换,但据我所知,在此示例中没有任何这样的交换。

有许多方法可以“清理”数据库,尽管在这种情况下这种清理并不是真正必要的。最简单的可能是学习如何使用Exchanges 对象,然后您可以删除任何您想要的东西。

于 2017-04-18T19:57:25.217 回答