diff options
Diffstat (limited to 'doc/source')
-rw-r--r-- | doc/source/usage.rst | 64 |
1 files changed, 62 insertions, 2 deletions
diff --git a/doc/source/usage.rst b/doc/source/usage.rst index 81c25cf..be9ff69 100644 --- a/doc/source/usage.rst +++ b/doc/source/usage.rst @@ -2,6 +2,66 @@ Usage ======== -To use in a project:: +To use oslo.db in a project:: + +* Session Handling + + .. code:: python + + from oslo.db.sqlalchemy import session as db_session + + _FACADE = None + + def _create_facade_lazily(): + global _FACADE + if _FACADE is None: + _FACADE = db_session.EngineFacade.from_config( + CONF.database.connection, CONF) + return _FACADE + + def get_engine(): + facade = _create_facade_lazily() + return facade.get_engine() + + def get_session(**kwargs): + facade = _create_facade_lazily() + return facade.get_session(**kwargs) + + +* Base class for models usage + + .. code:: python + + from oslo.db import models + + + class ProjectSomething(models.TimestampMixin, + models.ModelBase): + id = Column(Integer, primary_key=True) + ... + + +* DB API backend support + + .. code:: python + + from oslo.config import cfg + from oslo.db import api as db_api + + CONF = cfg.CONF + CONF.import_opt('backend', 'oslo.db.options', group='database') + + _BACKEND_MAPPING = {'sqlalchemy': 'project.db.sqlalchemy.api'} + + IMPL = db_api.DBAPI(CONF.database.backend, backend_mapping=_BACKEND_MAPPING) + + def get_engine(): + return IMPL.get_engine() + + def get_session(): + return IMPL.get_session() + + # DB-API method + def do_something(somethind_id): + return IMPL.do_something(somethind_id) - import db
\ No newline at end of file |