Skip to content

peewee error when unfolding datapackage created by premise #13

@CHarpprecht

Description

@CHarpprecht

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions