Source code for bw2data.database

# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
from eight import *

from . import databases, config
from .backends.single_file import SingleFileDatabase
from .backends.json import JSONDatabase
from .backends.peewee import SQLiteBackend
from .backends.iotable import IOTableBackend
from .utils import get_activity


[docs] def DatabaseChooser(name, backend=None): """A method that returns a database class instance. The default database type is `SingleFileDatabase`. `JSONDatabase` stores each process dataset in indented JSON in a separate file. Database types are specified in `databases[database_name]['backend']`. New database types can be registered with the config object: .. code-block:: python config.backends['backend type string'] = MyNewBackendClass .. warning:: Registering new backends must be done each time you start the Python interpreter. To test whether an object is a database subclass, do: .. code-block:: python from bw2data.backends import LCIBackend isinstance(my_database, LCIBackend) """ if name in databases: backend = databases[name].get("backend", backend or "sqlite") else: backend = backend or "sqlite" # Backwards compatibility if backend == "default": databases[name]['backend'] = 'singlefile' databases.flush() return SingleFileDatabase(name) elif backend == "sqlite": return SQLiteBackend(name) elif backend == "singlefile": return SingleFileDatabase(name) elif backend == "iotable": return IOTableBackend(name) elif backend == "json": raise ValueError("JSON backend not supported in dev release") return JSONDatabase(name) elif backend in config.backends: return config.backends[backend](name) else: raise ValueError("Backend {} not found".format(backend))
# Backwards compatibility
[docs] Database = DatabaseChooser
Database.get = get_activity