def alterDatabase(databaseOld: str, databaseNew: str) -> int: """Renames a database Parameters:\n databaseOld (str): name of the target database databaseNew (str): new name of the target database Returns:\n 0: successful operation 1: an error ocurred 2: non-existent target database 3: new database name occupied """ bd = _Buscar(databaseOld) if bd: if not _Buscar(databaseNew): mode = bd[1] val = -1 if mode == "avl": val = avl.alterDatabase(databaseOld, databaseNew) elif mode == "b": val = b.alterDatabase(databaseOld, databaseNew) elif mode == "bplus": val = bplus.alterDatabase(databaseOld, databaseNew) elif mode == "hash": val = hash.alterDatabase(databaseOld, databaseNew) elif mode == "isam": val = isam.alterDatabase(databaseOld, databaseNew) elif mode == "json": val = json.alterDatabase(databaseOld, databaseNew) elif mode == "dict": val = dict.alterDatabase(databaseOld, databaseNew) if val == 0: posicion = lista_general.index(bd) bd[0] = databaseNew lista_general[posicion] = bd serealizar.commit(lista_general, "cache", _main_path) return val else: return 3 else: return 2
def __init__(): global lista_general lista_general = [] # Lista de [Nombre, modo, encoding] if not os.path.isfile(_main_path + "\\" + "cache.bin"): serealizar.commit(lista_general, "cache", _main_path) else: lista_general = serealizar.rollback("cache", _main_path)
def loadCSV(file: str, database: str, table: str) -> list: """Loads a csv file and inserts its content into a table in a database Parameters:\n file (str): csv file path file (str): csv file path database (str): name of the database table (str): name of the table Returns:\n list: return values of each insert empty list: non-existent database, non-existent table, an error occured, csv file is empty """ try: archivo = open(file, "r") temp = _storage.Buscar(database) if temp: try: b = temp.Buscar(table) nombre = temp.list_table[b[1]] if b[0]: tabla = serealizar.rollback(nombre, _main_path + "\\" + database) registros = csv.reader(archivo, delimiter=",") valores = [] for registro in registros: valores.append(tabla.insertar(registro)) else: serealizar.commit(tabla, table, _main_path + "\\" + database) return valores else: return [] except: return [] else: return [] except: return []
def createTable(self, tableName, numberColumns): if not tableName in self.list_table: try: if re.search(table_name_pattern, tableName): self.list_table.append(tableName) temp = Tabla.Tabla(tableName, numberColumns) serealizar.commit(temp, tableName, self.main_path) return 0 else: return 1 except: return 1 else: return 3
def createDatabase(database: str, mode: str, encoding: str) -> int: """Creates a database Parameters:\n database (str): name of the database Returns:\n 0: successful operation 1: an error ocurred 2: database name occupied """ if not _Buscar(database): if encoding not in ["utf8", "ascii", "iso-8859-1"]: return 4 if mode == "avl": val = avl.createDatabase(database) elif mode == "b": val = b.createDatabase(database) elif mode == "bplus": val = bplus.createDatabase(database) elif mode == "hash": val = hash.createDatabase(database) elif mode == "isam": val = isam.createDatabase(database) elif mode == "json": val = json.createDatabase(database) elif mode == "dict": val = dict.createDatabase(database) else: return 3 if val == 0: lista_general.append([database, mode, encoding]) serealizar.commit(lista_general, "data", _main_path) return val else: return 2
def dropDatabase(database: str) -> int: """Deletes a database (including all of its content) Parameters:\n database (str): name of the database Returns:\n 0: successful operation 1: an error ocurred 2: non-existent database """ bd = _Buscar(database) if bd: mode = bd[1] val = -1 if mode == "avl": val = avl.dropDatabase(database) elif mode == "b": val = b.dropDatabase(database) elif mode == "bplus": val = bplus.dropDatabase(database) elif mode == "hash": val = hash.dropDatabase(database) elif mode == "isam": val = isam.dropDatabase(database) elif mode == "json": val = json.dropDatabase(database) elif mode == "dict": val = dict.dropDatabase(database) if val == 0: lista_general.remove(bd) serealizar.commit(lista_general, "cache", _main_path) return val else: return 2
def alterTable(self, tableOld, tableNew): salida = self.Buscar(tableOld) if salida[0]: try: temp = serealizar.rollback(tableOld, self.main_path) if not tableNew in self.list_table: if re.search(table_name_pattern, tableOld) and re.search( table_name_pattern, tableNew): os.remove(self.main_path + "\\" + tableOld + ".bin") self.list_table[salida[1]] = tableNew temp.alterTable(tableNew) serealizar.commit(temp, tableNew, self.main_path) return 0 else: return 1 else: return 4 except: return 1 else: return 3
def Guardar(self): serealizar.commit(self.tabla_actual, self.tabla_actual.nombre, self.main_path)