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)
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')
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)
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)
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
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)
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')
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")
def definir_inherits(self, nombre): return dbms.extractTable(self.bd_actual, nombre)[0]
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(