def __init__(self, manager): self.manager = manager settings = manager.settings engine = settings.get('SQLALCHEMYBACKEND_ENGINE') engine_echo = settings.get('SQLALCHEMYBACKEND_ENGINE_ECHO') drop_all_tables = settings.get('SQLALCHEMYBACKEND_DROP_ALL_TABLES') clear_content = settings.get('SQLALCHEMYBACKEND_CLEAR_CONTENT') models = settings.get('SQLALCHEMYBACKEND_MODELS') self.engine = create_engine(engine, echo=engine_echo) self.models = dict([(name, load_object(klass)) for name, klass in models.items()]) if drop_all_tables: DeclarativeBase.metadata.drop_all(self.engine) DeclarativeBase.metadata.create_all(self.engine) self.session_cls = sessionmaker() self.session_cls.configure(bind=self.engine) if clear_content: session = self.session_cls() for name, table in DeclarativeBase.metadata.tables.items(): session.execute(table.delete()) session.close() self._metadata = Metadata(self.session_cls, self.models['MetadataModel'], settings.get('SQLALCHEMYBACKEND_CACHE_SIZE')) self._states = States(self.session_cls, self.models['StateModel'], settings.get('STATE_CACHE_SIZE_LIMIT')) self._queue = self._create_queue(settings)
def _init_strategy_worker(self, manager): settings = manager.settings drop_all_tables = settings.get('SQLALCHEMYBACKEND_DROP_ALL_TABLES') clear_content = settings.get('SQLALCHEMYBACKEND_CLEAR_CONTENT') model_states = self.models['StateModel'] model_dm = self.models['DomainMetadataModel'] self.check_and_create_tables(drop_all_tables, clear_content, (model_states, model_dm)) self._states = States(self.session_cls, model_states, settings.get('STATE_CACHE_SIZE_LIMIT')) self._domain_metadata = DomainMetadata(self.session_cls)
def strategy_worker(cls, manager): b = cls(manager) settings = manager.settings drop_all_tables = settings.get('SQLALCHEMYBACKEND_DROP_ALL_TABLES') clear_content = settings.get('SQLALCHEMYBACKEND_CLEAR_CONTENT') model = b.models['StateModel'] if drop_all_tables: model.__table__.drop(bind=b.engine) model.__table__.create(bind=b.engine) if clear_content: session = b.session_cls() session.execute(model.__table__.delete()) session.close() b._states = States(b.session_cls, model, settings.get('STATE_CACHE_SIZE_LIMIT')) return b