-
Notifications
You must be signed in to change notification settings - Fork 2
Description
I created and exported a datapackage with premise and tried to unfold the datapackage. However, this was not possible due to an error when writing the database again.
Versions:
- premise-bw2 2025.10.13, 2.3.0
- unfold 1.2.3
- bw2io 0.8.12
- bw2data 3.6.6
ecoinvent version 3.10.1. cutoff.
code:
ndb = NewDatabase(
scenarios=[
{"model": "image", "pathway": "SSP2-M", "year": 2025}, # "SSP2-Base"
],
source_db="ecoinvent-3.10.1-cutoff", # <-- name of the database in the BW2 project. Must be a string.
source_version="3.10", # <-- version of ecoinvent. Can be "3.8", "3.9" or "3.10". Must be a string.
keep_source_db_uncertainty=True, # False by default, set to True if you want to keep ecoinvent's uncertainty data
keep_imports_uncertainty=True, # False by default, set to True if you want to keep the uncertainty data of the additional inventories
use_absolute_efficiency=False, # False by default, set to True if you want to use the IAM's absolute efficiencies
)
ndb.update("steel") # <- updates all sectors
ndb.write_datapackage() # Note: silent crash, here
Error:
`
Indicate the database number for dependency 1: 2
Indicate the database number for dependency 2: 1
Extracting additional inventories...
Generating database for scenario image - SSP2-M - 2025...
Could not find key: ('Heat, waste', None, None, ('air', 'unspecified'))
Could not find key: ('Heat, waste', None, None, ('air', 'unspecified'))
Writing database for scenario image - SSP2-M - 2025...
Database image - SSP2-M - 2025 already exists: it will be overwritten.
Writing activities to SQLite3 database:
0% [####### ] 100% | ETA: 00:00:27Traceback (most recent call last):
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 3322, in execute_sql
cursor.execute(sql, params or ())
sqlite3.IntegrityError: NOT NULL constraint failed: exchangedataset.input_code
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "d:\PycharmProjects\lci-extractor\explorations\2_fold_unfold.py", line 17, in
u.unfold()
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\unfold\unfold.py", line 1326, in unfold
self.write(superstructure=superstructure, export_dir=export_dir)
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\unfold\unfold.py", line 1347, in write
write_brightway_database(data=database, name=scenario)
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\unfold\brightway2_export.py", line 8, in write_brightway_database
BW2UnfoldExporter(name, data).write_database()
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\unfold\brightway2_export.py", line 35, in write_database
super().write_database()
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\bw2io\importers\base_lci.py", line 273, in write_database
db.write(existing)
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\bw2data\project.py", line 358, in writable_project
return wrapped(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\bw2data\backends\peewee\database.py", line 260, in write
self._efficient_write_many_data(data)
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\bw2data\backends\peewee\database.py", line 204, in _efficient_write_many_data
exchanges, activities = self._efficient_write_dataset(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\bw2data\backends\peewee\database.py", line 168, in _efficient_write_dataset
ExchangeDataset.insert_many(exchanges).execute()
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 2036, in inner
return method(self, database, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 2107, in execute
return self._execute(database)
^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 2912, in _execute
return super(Insert, self)._execute(database)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 2625, in _execute
cursor = database.execute(self)
^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 3330, in execute
return self.execute_sql(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 3320, in execute_sql
with exception_wrapper:
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 3088, in exit
reraise(new_type, new_type(exc_value, *exc_args), traceback)
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 196, in reraise
raise value.with_traceback(tb)
File "D:\PycharmProjects\lci-extractor.pixi\envs\prod\Lib\site-packages\peewee.py", line 3322, in execute_sql
cursor.execute(sql, params or ())
peewee.IntegrityError: NOT NULL constraint failed: exchangedataset.input_code
`
this seems to be similar to this error:
polca/premise#187