Metadata-Version: 2.1
Name: microcosm-sqlite
Version: 0.26.0
Summary: Opinionated persistence with SQLite
Home-page: https://github.com/globality-corp/microcosm-sqlite
Author: Globality Engineering
Author-email: engineering@globality.com
License: UNKNOWN
Description: # microcosm-sqlite
        
        Opinionated data loading with SQLite.
        
        While most distributed application runtimes will use a networked data store for mutable state,
        the usage patterns of data that is read-only at runtime are great fit for SQLite.
        
        In particular, `microcosm-sqlite` assumes that applications will
        
         -  Build data sets in advance and ship them as static artifacts (e.g. in source control)
         -  Load data immutable sets at runtime without loading entire data sets into memory
        
        
        ## Writing Models
        
        Persistent data is expected to use SQLAlchemy's declarative base classes. Because different data sets
        may be shipped in different SQLite databases, each declarative base class needs to have a **unique**
        name and a separate engine configuration, which is achieved by adding `DataSet` as the base of the
        declarative base class:
        
            Base = DataSet.create("some_name")
        
        
            class SomeModel(Base):
                __tablename__ = "sometable"
        
                id = Column(Integer, primary_key=True)
        
        
        ## Using Stores
        
        Basic persistence operations are abstracted through a store:
        
            class SomeStore(Store):
        
                @property
                def model_class(self):
                    return SomeModel
        
        
             store = SomeStore()
             results = store.search()
        
        
        ## Configuring SQLite
        
        Each `DataSet` defaults to using `:memory:` storage, but can be customized in two ways:
        
         1. The `SQLiteBindFactory` can be configured with custom paths:
        
                loader = load_from_dict(
                    sqlite=dict(
                        paths={
                            "some_name": "/path/to/database",
                        },
                    ),
                )
                graph = create_object_graph("example", loader=loader)
        
         2. The `microcosm.sqlite` entrypoint can contain a mapping from a data set name to a
            function that returns a path.
        
Keywords: microcosm
Platform: UNKNOWN
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: lint
Provides-Extra: test
