コード例 #1
0
    def virtualizar_tabla(self, index:indexador_auxiliar, entorno: Tabla_de_simbolos, arbol:Arbol):
        # -----------------------------------------------
        # Codigo para acceder a estructuras de EDD (estan quemados por el momento)
        # basado en el index.origen
        body = j.extractTable(entorno.getBD(),index.origen)
        x = Meta.getNameColumns(body[0])
        body[0] = x
        # body = [['Cod', 'estado', 'ciudad', 'zona'], [1, 'Guatemala', 'Guatemala', 'GTM'], [2, 'Cuilapa', 'Santa Rosa', 'GTM'], [3, 'San Salvador', 'San Salvador', 'SLV']]
        tamFila = len(body)
        tamColumna = len(body[0])
        if tamFila > self.tamFilaTablaSelect:
            self.tamFilaTablaSelect = tamFila
        '''headers:list = ['C_1', 'C_2', 'C_3', 'C_4', 'C_5']
        body:list = [
            '1.1', '2.1', '3.1', '4.1', '5.1',
            '1.2', '2.2', '3.2', '4.2', '5.2',
            '1.3', '2.3', '3.3', '4.3', '5.3'
        ]'''
        # -----------------------------------------------

        nombreTabla = self. definidorDeNombre_deTabla_basadoEnIndexador(index)
        tablaVirtualizada:Valor = Valor(TIPO.MATRIZ, nombreTabla)
        tablaVirtualizada.inicializarMatrix_boring(tamFila, tamColumna)
        tablaVirtualizada.setearMatriz_byJespino(body)
        #tablaVirtualizada.establecer_encabezados(headers)
        #tablaVirtualizada.setear_body_byList_MATRIZ(body)
        # self.consolaInterna = tablaVirtualizada.consola_imprimirMatriz_NERY()
        tablaVirtualizada.consola_imprimirMatriz_NERY()
        newSimbolo:Simbolo = Simbolo(nombreTabla, TIPO.MATRIZ, tablaVirtualizada)
        entorno.insertar_variable(newSimbolo)

        TSreport = ReporteTS(
            nombreTabla, "Tabla", "Select", 1, 1
        )
        arbol.ReporteTS.append(TSreport)
コード例 #2
0
    def insertNormal(self, databaseName: str, entorno, arbol):

        if Meta.existTable(databaseName, self.tableName) == True:

            table: list = j.extractTable(databaseName, self.tableName)
            Meta.headColumns   = table[0]
            Meta.table         = table
            headColumns = table[0]
            listvalues: list = self.getValues(self.listValues, entorno, arbol)
            listcolum = Meta.getNameColumns(headColumns)

            #definimos los valores por default
            defaults = Meta.setDefaults(listcolum,listvalues)
            self.listColumn = defaults[0]
            listvalues      = defaults[1]


            if self.checkLen(headColumns, self.listValues) == True:
                if Meta.checkNotNull(self.tableName, listcolum, listvalues, headColumns) == True:
                    if Meta.checkUnique(listcolum, listvalues, headColumns) == True:
                        if Meta.TypesCompare(headColumns, self.listValues, entorno, arbol) == True:

                            values: list = self.getValues(self.listValues, entorno, arbol)
                            j.insert(databaseName, self.tableName, values)
                            print(self.tableName, '1 una fila a sido afectada')
コード例 #3
0
 def execute(self, entorno: Tabla_de_simbolos, arbol: Arbol):
     # Se verifica que se este trabajando sobre una base de datos
     if entorno.BDisNull() is True:
         '''
           ______ _____  _____   ____  _____  
          |  ____|  __ \|  __ \ / __ \|  __ \ 
          | |__  | |__) | |__) | |  | | |__) |
          |  __| |  _  /|  _  /| |  | |  _  / 
          | |____| | \ \| | \ \| |__| | | \ \ 
          |______|_|  \_\_|  \_\\____/|_|  \_\
         Descripcion: No se ha seleccionado una base de datos para trabajar.
         '''
         Error: ErroresSemanticos = ErroresSemanticos(
             "XX00: no se a seleccionado base de datos", self.linea,
             self.columna, 'Update')
         arbol.ErroresSemanticos.append(Error)
         print('No se ha seleccionado una base de datos para trabajar')
         return
     # Se verifica que exista la tabla a actualizar
     else:
         # Si la tabla existe
         if Meta.existTable(entorno.getBD(), self.table_name) is True:
             # Se obtiene los encabezados de la tabla, las columnas y sus valores a actualizar
             header = dbms.extractTable(entorno.getBD(), self.table_name)[0]
             columns, values = [], []
             self.getdata(columns, values, entorno, arbol)
             # Si no hay condicional where
             if self.where is None:
                 pass
             # Si hay condicional where
             else:
                 self.whithwhere(columns, header, values, entorno, arbol)
コード例 #4
0
    def getBD(self):

        if self.existTable('global_', 'config') == False:
            self.BD = ""
        else:
            config = dbms.extractTable('global_', 'config')
            self.BD = config[0][0]

        return str(self.BD)
コード例 #5
0
ファイル: Meta.py プロジェクト: edgarJ91/tytus
 def getHeadByName(cls, nameField) -> str:
     result = ''
     table: list = dbms.extractTable(Meta.databaseName, Meta.tableName)
     headColumns = table[0]
     for head in headColumns:
         headName = Meta.getNameByHead(head)
         if headName == nameField:
             result = head
             return result
     return result
コード例 #6
0
    def setBD(self, id):

        if self.existTable('global_', 'config') == False:
            dbms.createDatabase('global_')
            dbms.createTable('global_', 'config', 1)
            dbms.insert('global_', 'config', [id])
            dbms.alterAddPK('global_', 'config', [0])
        else:
            config = dbms.extractTable('global_', 'config')
            databaseName = config[0][0]
            result = dbms.update('global_', 'config', {0: id}, [0])

        self.BD = str(id)
コード例 #7
0
    def insertWithListId(self, databaseName: str, entorno, arbol):

        #1. Verificamos si la tabla existe
        #2. Obtenemos los valores por default si no vinieran
        #3. Verificamos la longitud de los valores tiene que ser igual al de las columnas
        #4. Verificamos Que las columnas existan
        #4. Verificamos que no venga nula una columna con restriccion unique

        if Meta.existTable(databaseName, self.tableName) == True and \
                self.checkLen(self.listColumn, self.listValues) == True:

            table: list = j.extractTable(databaseName, self.tableName)
            Meta.headColumns   = table[0]
            Meta.table         = table
            headColumns = table[0]
            listvalues: list = self.getValues(self.listValues, entorno, arbol)

            #definimos los valores por default
            defaults = Meta.setDefaults(self.listColumn,listvalues)
            self.listColumn = defaults[0]
            listvalues      = defaults[1]

            if  Meta.existColumn(self.tableName, self.listColumn, headColumns) == True :
                if Meta.checkNotNull(self.tableName, self.listColumn,listvalues, headColumns) == True  :
                    if Meta.checkUnique(self.listColumn,listvalues,headColumns) == True:

                        heads = []
                        for column in self.listColumn:
                            head = Meta.getHeadByName(column)
                            heads.append(head)


                        if Meta.TypesCompare(heads,self.listValues , entorno, arbol) == True:


                            newRow = Meta.getRowByValues(self.listColumn, listvalues, headColumns)
                            j.insert(databaseName, self.tableName, newRow)

                            arbol.console.append('1 una fila a sido afectada \n')
                            print(self.tableName, '1 una fila a sido afectada')
コード例 #8
0
 def whithwhere(self, columns, header, values, entorno, arbol):
     # Se verifica que existan las columnas y que no se repitan
     if Meta.existColumn(self.table_name, columns, header):  # Si existen
         # Se verifica que los tipos de valores de las columnas coincidan con los tipos de valores dados
         Meta.databaseName = entorno.getBD()
         Meta.tableName = self.table_name
         if self.TypesCompare(self.setheaders(columns), values, entorno,
                              arbol):  # Si todos los tipos coinciden
             # Se verifican que los valores dados cumplan las especificaciones de las columnas
             if self.verifyespecs(
                     columns, values, header
             ) is True:  # TODO: 1) Hay que ver que se cumplan todas
                 # Se selecciona la tabla de la que se extraeran los registros en la tabla de simbolos
                 entorno.settable(
                     dbms.extractTable(entorno.getBD(), self.table_name))
                 # Se resuelven los where y se obtiene un posible resultado
                 pks = self.where.execute(
                     entorno, arbol
                 )  # TODO: 2) Validar todos los operacionales para el where
                 # Si no hubieron coincidencias en la busqueda del where
                 if not pks:
                     print(
                         "tytus> No hubieron coincidencias en la búsqueda")
                 # Si hubo un error en la busqueda del where
                 elif pks is None:
                     return
                 # Si hubieron coincidencias en la busqueda del where
                 else:
                     # Si se cumplio cada una de las condiciones, se obtienen los registros y llaves primarias
                     registers = self.createregisters(
                         Meta.getListNumberColumns(columns, header), values,
                         entorno, arbol)
                     for pk in pks:
                         # Se ejecuta el metodo del dbms para actualizar los valores de una tabla
                         dbms.update(entorno.getBD(), self.table_name,
                                     registers, pk)
                     message = "tytus> Se modificaron las columnas exitosamente"
                     arbol.console.append(message)
                     print(
                         "tytus> Se modificaron las columnas exitosamente")
コード例 #9
0
 def definir_inherits(self, nombre):
     return dbms.extractTable(self.bd_actual, nombre)[0]
コード例 #10
0
ファイル: test1.py プロジェクト: sandymerida/tytus
    j.insert('world', 'cities', [3, 'San Salvador', 'San Salvador', 'SLV'])
    j.insert('world', 'cities', [4, 'San Miguel', 'San Miguel', 'SLV'])

    # inser data in languages
    j.insert('world', 'languages', ['GTM', 'Spanish', 'official', 64.7])
    j.insert('world', 'languages', ['SLV', 'Spanish', 'official', 100.0])

    # update
    j.showCollection()
    j.update('world', 'cities', {2: 'Brasil'}, [3])
    j.update('world', 'cities', {2: 'Brasil'}, [4])
    # show all data
    j.showCollection()

    lis = list()
    lis = j.extractTable('world', 'countries')
    for item in lis:
        print(item)
    '''

		
		insert into t1 (id, nombre) values (1,'lola');
		
	'''

    #todo:Definir check, evualuar exp con interprete
    '''

		create database dab1;
		use dab1;
		create table t1(