def createDatabase(database: str, mode: str, encoding: str): if verify_string( database ): # Metodo que verifica el nombre si cumple con las condiciones metadata, index = get_metadata_db(database) if metadata: return 2 # Verifica que no haya repetidos en el listado de metadata database if str(encoding.lower().strip()) == "ascii" or str(encoding.lower().strip()) == "iso-8859-1" \ or str(encoding.lower().strip()) == "utf8": # Revisa que cumpla con la codificacion if mode_dict.get(mode) is None: return 3 # Revisa que el modo este en el diccionario si no esta retorno 3 mode_struct = get_struct( mode) # Retorna el objeto avl,b,bplus, etc dependiendo el modo status = mode_struct.createDatabase( database ) # Crea base de datos de la estructura correspondiente(avl,b) if status == 0: # Si el estatus es el correcto guarda en la lista metadata_db_list save_database_db(database, mode.lower().strip(), encoding) # Guarda en la lista metada_db_list return status else: return 4 else: return 1
def alterTableCompress(database, table, level): if verify_string(database): metadata_db, index_md_db = get_metadata_db(database) if metadata_db: if (level >= -1) and (level <= 9): bandera = False tabla_metadatos = metadata_db.get_table(table) if not tabla_metadatos.get_compress(): registros = extractTable(database, table) if registros: truncate(database, table) for tupla in registros: lista_comprimida = [] bandera = True for columna in tupla: if type(columna) == str: col_compress = zlib.compress(columna.encode("utf-8"), level) lista_comprimida.append(col_compress) else: lista_comprimida.append(columna) insert(database, table, lista_comprimida) tabla_metadatos.set_compress(True) if bandera: return 0 else: return 1 else: return 4 else: return 2 else: return 1
def graficarRegistros(self, database, table_name): if verify_string(database): db_search = self.__tree__db.search_value(database) if db_search is not None: return db_search.get_element().graficar(table_name) else: return 1
def alterTableDecompress( database: str, table: str): if verify_string(database): metadata_db, index_md_db = get_metadata_db(database) if metadata_db: bandera = False tabla_metadatos = metadata_db.get_table(table) if tabla_metadatos: if tabla_metadatos.get_compress(): registros = extractTable(database,table) if registros: truncate(database, table) for tupla in registros: lista_descomprimida = [] bandera = True for columna in tupla: if type(columna) == bytes: col_descompress = zlib.decompress(columna).decode("utf-8") lista_descomprimida.append(col_descompress) else: lista_descomprimida.append(columna) insert(database,table,lista_descomprimida) tabla_metadatos.set_compress(False) else: return 4 else: return 3 if bandera: return 0 else: return 1 else: return 2 else: return 1
def createDatabase(database: str, mode: str, encoding: str): if verify_string(database): if exist(database): return 2 if encoding.lower().strip() is "ascii" or encoding.lower().strip() is "iso-8859-1" \ or encoding.lower().strip() is "utf8": status = -1 if mode.lower().strip() is "avl": status = avl.createDatabase(database) elif mode.lower().strip() is "b": status = b.createDatabase(database) elif mode.lower().strip() is "bplus": status = bPlus.createDatabase(database) elif mode.lower().strip() is "dict": status = diccionario.createDatabase(database) elif mode.lower().strip() is "isam": status = isam.createDatabase(database) elif mode.lower().strip() is "json": status = json.createDatabase(database) elif mode.lower().strip() is "hash": status = hash.createDatabase(database) else: return 3 if status == 0: save_mode(database, mode, encoding) return status else: return 4 else: return 1
def createDataBase(self, db_nombre): if verify_string(db_nombre): if self.__tree__db.search_value(db_nombre) is None: new_db = DataBase(db_nombre) self.__tree__db.add(new_db) return 0 else: return 2 else: return 1
def create_table(self, table, number_columns): if verify_string(table): if self.__tree__table.search_value(table) is None: new_table = Table(table, number_columns) self.__tree__table.add(new_table) return 0 else: return 3 else: return 1
def drop_table(self, table): if verify_string(table): table_search = self.__tree__table.search_value(table) if table_search: self.__tree__table.delete_nodo(table) return 0 else: return 3 else: return 1
def extractTable(self, database, table_name): if verify_string(database): db = self.__tree__db.search_value(database) if db is not None: respuesta = db.get_element().extract_table(table_name) else: return None return respuesta else: return 1
def showTables(self, database): if verify_string(database): db = self.__tree__db.search_value(database) if db is not None: tablas = db.get_element().show_tables() else: return None return tablas else: return 1
def dropDatabase(self, db_name): if verify_string(db_name): db_search = self.__tree__db.search_value(db_name) if db_search is not None: self.__tree__db.delete_nodo(db_name) return 0 else: return 2 else: return 1
def truncate(self, database, table_name): if verify_string(database): db_search = self.__tree__db.search_value(database) if db_search is not None: respuesta = db_search.get_element().truncate(table_name) self.__save() else: return 2 return respuesta else: return 1
def alterDropPK(self, database, table_name): if verify_string(database): db = self.__tree__db.search_value(database) if db is not None: respuesta = db.get_element().alter_drop_pk(table_name) self.__save() else: return 2 return respuesta else: return 1
def alterTable(self, database, tableOld, tableNew): if verify_string(database): db = self.__tree__db.search_value(database) if db is not None: respuesta = db.get_element().alter_table(tableOld, tableNew) self.__save() else: return 2 return respuesta else: return 1
def extractRow(self, database, table_name, columns): if verify_string(database): db_search = self.__tree__db.search_value(database) if db_search is not None: respuesta = db_search.get_element().extract_row( table_name, columns) else: return 2 return respuesta else: return 1
def extractRangeTable(self, database, table_name, columnNumber, lower, upper): if verify_string(database): db = self.__tree__db.search_value(database) if db is not None: respuesta = db.get_element().extract_range_table( table_name, columnNumber, lower, upper) else: return None return respuesta else: return 1
def alterAddColumn(self, database, table_name, default): if verify_string(database): db = self.__tree__db.search_value(database) if db is not None: respuesta = db.get_element().alter_add_column( table_name, default) self.__save() else: return 2 return respuesta else: return 1
def update(self, database, table_name, register, columns): if verify_string(database): db_search = self.__tree__db.search_value(database) if db_search is not None: respuesta = db_search.get_element().update( table_name, register, columns) self.__save() else: return 2 return respuesta else: return 1
def loadCSV(self, file, database, table_name): if verify_string(database): db_search = self.__tree__db.search_value(database) if db_search is not None: respuesta = db_search.get_element().load_csv(file, table_name) self.__save() else: return 2 return respuesta else: return 1
def createTable(self, database, table_name, number_columns): if verify_string(database): db = self.__tree__db.search_value(database) if db is not None: respuesta = db.get_element().create_table( table_name, number_columns) self.__save() else: return 2 return respuesta else: return 1
def alter_table(self, table_old, table_new): bandera = self.__tree__table.search_value(table_new) if bandera is None: if verify_string(table_new): table = self.__tree__table.search_value(table_old) if table: self.__tree__table.delete_nodo(table.get_element().get_table_name()) table = table.get_element() table.set_table_name(table_new) self.__tree__table.add(table) return 0 else: return 3 else: return 1 else: return 4
def alterDatabase(self, old_db, new_db): bandera = self.__tree__db.search_value(new_db) if bandera is None: if verify_string(new_db): db = self.__tree__db.search_value(old_db) if db is not None: self.__tree__db.delete_nodo( db.get_element().get_database()) db = db.get_element() db.set_database(new_db) self.__tree__db.add(db) return 0 else: return 2 else: return 1 else: return 3