我有一个关于使用 Brightway 数据库对象访问交换数据的问题。假设我有import Brightway2 as bw
并且正在一个有 LCI 数据库的项目中:
[In] bw.databases
[Out] Brightway2 databases metadata with 2 objects:
biosphere3
ecoinvent 3_2 APOS
我可以获得有关活动的信息:
[In] ei32 = bw.Database('ecoinvent 3_2 APOS')
someActivity = ei32.get('00c71af952a1248552fc2bfa727bb6b5')
someActivity
[Out] 'market for transport, freight, inland waterways, barge with reefer, cooling' (ton kilometer, GLO, None)
看来我可以访问以下数据:
[In] list(someActivity)
[Out] ['database',
'production amount',
'name',
'reference product',
'classifications',
'activity',
'location',
'filename',
'parameters',
'code',
'authors',
'paramters',
'comment',
'flow',
'type',
'unit',
'activity type']
请注意,没有'exchanges'
. 事实上,虽然这有效:
[In] someActivity.get('location')
[Out] 'GLO'
或者,等效地:
[In] someActivity['location']
[Out] 'GLO'
更改'location'
for'exchanges'
不会产生任何结果(第一种语法)或关键错误(第二种语法)。
exchanges = ds.get('exchanges', [])
目前,我访问交换数据的唯一方法是访问.load
数据库(它将整个数据库加载到字典中),创建一个活动键,然后调用交换,如下所示:
[In] ei32Loaded = ei32.load()
activities = sorted(ei32Loaded.keys())
ei32Loaded[activities[42]]['exchanges']
[Out] [{'activity': '0fb6238a-e252-4d19-a417-c569ce5e2729', 'amount': xx,
...}]
它工作正常,但我知道交换数据在数据库中,所以我确信必须有一种方法可以在不加载的情况下获取它。至少,我想知道为什么someActivity.get('exchanges', [])
对我不起作用。谢谢!