Example #1
0
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
Example #2
0
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)
Example #3
0
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 []
Example #4
0
 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
Example #5
0
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
Example #6
0
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
Example #7
0
    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
Example #8
0
 def Guardar(self):
     serealizar.commit(self.tabla_actual, self.tabla_actual.nombre,
                       self.main_path)