def get_schema_from_list(table_name, frum): """ SCAN THE LIST FOR COLUMN TYPES """ columns = UniqueIndex(keys=("names.\\.",)) _get_schema_from_list(frum, ".", prefix_path=[], nested_path=ROOT_PATH, columns=columns) return Schema(table_name=table_name, columns=columns)
def __init__(self, host, index, type=None, alias=None, name=None, port=9200, read_only=True, typed=None, settings=None): Container.__init__(self, None) if not containers.config.default: containers.config.default.settings = settings self.settings = settings self.name = coalesce(name, alias, index) if read_only: self._es = elasticsearch.Alias(alias=coalesce(alias, index), settings=settings) else: self._es = elasticsearch.Cluster(settings=settings).get_index( read_only=read_only, settings=settings) self.meta = FromESMetadata(settings=settings) self.settings.type = self._es.settings.type self.edges = Dict() self.worker = None columns = self.get_columns(table_name=name) self._schema = Schema(columns) if typed == None: # SWITCH ON TYPED MODE self.typed = any(c.name in ("$value", "$object") for c in columns) else: self.typed = typed
def get_schema_from_list(frum): """ SCAN THE LIST FOR COLUMN TYPES """ columns = {} _get_schema_from_list(frum, columns, prefix=[], nested_path=ROOT_PATH, name_to_column=columns) return Schema(columns.values())
def __init__( self, host, index, type=None, alias=None, name=None, port=9200, read_only=True, timeout=None, # NUMBER OF SECONDS TO WAIT FOR RESPONSE, OR SECONDS TO WAIT FOR DOWNLOAD (PASSED TO requests) consistency="one", # ES WRITE CONSISTENCY (https://www.elastic.co/guide/en/elasticsearch/reference/1.7/docs-index_.html#index-consistency) typed=None, kwargs=None): Container.__init__(self, None) if not containers.config.default: containers.config.default.settings = kwargs self.settings = kwargs self.name = coalesce(name, alias, index) if read_only: self._es = elasticsearch.Alias(alias=coalesce(alias, index), kwargs=kwargs) else: self._es = elasticsearch.Cluster(kwargs=kwargs).get_index( read_only=read_only, kwargs=kwargs) self.meta = FromESMetadata(kwargs=kwargs) self.settings.type = self._es.settings.type self.edges = Data() self.worker = None columns = self.meta.get_columns( table_name=coalesce(name, alias, index)) self._schema = Schema(coalesce(name, alias, index), columns) if typed == None: # SWITCH ON TYPED MODE self.typed = any(c.names["."] in ("$value", "$object") for c in columns) else: self.typed = typed
def add(self, value): self.data.append(value) def __getitem__(self, item): if item < 0 or len(self.data) <= item: return Null return self.data[item] def __iter__(self): return (wrap(d) for d in self.data) def __len__(self): return len(self.data) def _exec(code): try: temp = None exec "temp = " + code return temp except Exception as e: Log.error("Could not execute {{code|quote}}", code=code, cause=e) from pyLibrary.queries import Schema, jx DUAL = ListContainer(name="dual", data=[{}], schema=Schema(table_name="dual", columns=UniqueIndex(keys=("names.\\.", ))))