Source code for bw2data.database
from bw2data import databases, projects
from bw2data.data_store import ProcessedDataStore
[docs]
def DatabaseChooser(name: str, backend: str = "sqlite") -> ProcessedDataStore:
"""A method that returns a database class instance.
Database types are specified in `databases[database_name]['backend']`.
"""
from bw2data.subclass_mapping import DATABASE_BACKEND_MAPPING
if backend == "iotable" and projects.dataset.is_sourced:
raise ValueError("`iotable` backend not consistent with `sourced` project")
if name in databases:
backend = databases[name].get("backend") or backend
if not backend or not isinstance(backend, str):
raise ValueError(
f"Invalid value for backend: '{backend}'. Must be a string in "
+ "`bw2data.database.DATABASE_BACKEND_MAPPING`"
)
try:
return DATABASE_BACKEND_MAPPING[backend](name)
except KeyError as exc:
raise KeyError(f"Backend {backend} not found") from exc
# Backwards compatibility
[docs]
Database = DatabaseChooser