Source code for oriole_service.db

""" Oriole-DB """

from sqlalchemy import Column, Integer, String, create_engine, types
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy import and_, or_, distinct, func
from redis import StrictRedis
from oriole_service.api import Config

Base = declarative_base()


[docs]class Db(object): def __init__(self, base=Base): self.engine = "" self.base = base self.config = Config()
[docs] def get_db(self): database = self.config.get("database") return self.create_db(database)
[docs] def get_test_db(self): database = self.config.get("test_database", "sqlite://") return self.create_db(database)
[docs] def drop_db(self): self.dbo.rollback() self.dbo.commit() self.dbo.close() self.base.metadata.drop_all(self.engine) self.engine.dispose()
[docs] def get_rs(self): return StrictRedis.from_url(self.config["datasets"])
[docs] def create_db(self, database): self.engine = create_engine(database) self.base.metadata.create_all(self.engine) self.dbo = scoped_session(sessionmaker(self.engine)) return self.dbo