Beispiel #1
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)
Beispiel #2
0
    def execute(self, entorno: Tabla_de_simbolos, arbol: Arbol):
        # Se obtiene la base de datos actual, la tabla a crear y el numero de colúmnas
        bdactual = entorno.getBD()
        self.bd_actual = bdactual
        nuevatabla = self.id
        nocolumnas = len(self.columnas)
        if self.herencia is not None:
            self.inh = self.definir_inherits(self.herencia.tabla)
            if self.inh is not None:
                self.ifinh = True
                nocolumnas = nocolumnas + len(self.inh)
            else:
                '''
                                            			  ______ _____  _____   ____  _____  
                                            			 |  ____|  __ \|  __ \ / __ \|  __ \ 
                                            			 | |__  | |__) | |__) | |  | | |__) |
                                            			 |  __| |  _  /|  _  /| |  | |  _  / 
                                            			 | |____| | \ \| | \ \| |__| | | \ \ 
                                            			 |______|_|  \_\_|  \_\\____/|_|  \_\

                                            			Descripcion: ocurrio un error o no existe la base de datos
                                            			'''
                Error: ErroresSemanticos = ErroresSemanticos(
                    "XX00: internal_error db is not exist", self.linea,
                    self.columna, 'Create Table')
                arbol.ErroresSemanticos.append(Error)

                print("error")
                #return
        # Se utiliza el paquete de almacenamiento para enviar a crear una nueva tabla y se obtiene un retorno
        retorno = dbms.createTable(bdactual, nuevatabla, nocolumnas)
        if retorno == 0:  # Si la operacion exitosa
            primarykeys = self.crear_pks(
            )  # Se verifican si existen llaves primarias
            if len(primarykeys) != 0:
                pks = self.obtenerindice(primarykeys)
                dbms.alterAddPK(bdactual, nuevatabla,
                                pks)  # Se crean las llaves primarias
                cadena = "tytus> La tabla '" + self.id + "' fue creada exitosamente"
                print("tytus> La tabla '" + self.id +
                      "' fue creada exitosamente")
                arbol.console.append(cadena)
            else:
                pks = self.obtenerindice(primarykeys)
                if len(pks) != 0:
                    dbms.alterAddPK(bdactual, nuevatabla,
                                    pks)  # Se crean las llaves primarias
            self.crear_encabezados(
                bdactual, entorno,
                arbol)  # Se crean los encabezados de las columnas
        elif retorno == 1:  # Error en la operacion
            '''
                                        			  ______ _____  _____   ____  _____  
                                        			 |  ____|  __ \|  __ \ / __ \|  __ \ 
                                        			 | |__  | |__) | |__) | |  | | |__) |
                                        			 |  __| |  _  /|  _  /| |  | |  _  / 
                                        			 | |____| | \ \| | \ \| |__| | | \ \ 
                                        			 |______|_|  \_\_|  \_\\____/|_|  \_\

                                        			Descripcion: error en la operacion
                                        			'''
            Error: ErroresSemanticos = ErroresSemanticos(
                "XX00: internal_error error en la operacion", self.linea,
                self.columna, 'Create Table')
            arbol.ErroresSemanticos.append(Error)
            print("Nel error")
        elif retorno == 2:  # La base de datos no existe
            '''
                                        			  ______ _____  _____   ____  _____  
                                        			 |  ____|  __ \|  __ \ / __ \|  __ \ 
                                        			 | |__  | |__) | |__) | |  | | |__) |
                                        			 |  __| |  _  /|  _  /| |  | |  _  / 
                                        			 | |____| | \ \| | \ \| |__| | | \ \ 
                                        			 |______|_|  \_\_|  \_\\____/|_|  \_\

                                        			Descripcion: no existe la base de datos
                                        			'''
            Error: ErroresSemanticos = ErroresSemanticos(
                "XX00: internal_error db is not exist", self.linea,
                self.columna, 'Create Table')
            arbol.ErroresSemanticos.append(Error)
            print("Nel no existe la bd")

        elif retorno == 3:  # La tabla ya existe
            '''
                                        			  ______ _____  _____   ____  _____  
                                        			 |  ____|  __ \|  __ \ / __ \|  __ \ 
                                        			 | |__  | |__) | |__) | |  | | |__) |
                                        			 |  __| |  _  /|  _  /| |  | |  _  / 
                                        			 | |____| | \ \| | \ \| |__| | | \ \ 
                                        			 |______|_|  \_\_|  \_\\____/|_|  \_\

                                        			Descripcion: la tabla 'self.id' ya existe
                                        			'''
            Error: ErroresSemanticos = ErroresSemanticos(
                "XX01: internal_error id ya existe", self.linea, self.columna,
                'Create Table')
            arbol.ErroresSemanticos.append(Error)
            print("Nel ya existe la tabla")
Beispiel #3
0
if __name__ == '__main__':

    # drop all databases if exists
    j.dropAll()

    # create database
    j.createDatabase('world')

    # create tables
    j.createTable('world', 'countries', 4)
    j.createTable('world', 'cities', 4)
    j.createTable('world', 'languages', 4)

    # create simple primary keys
    j.alterAddPK('world', 'countries', [0])
    j.alterAddPK('world', 'cities', [0])
    j.alterAddPK('world', 'languages', [0, 1])
    '''
		create database world;
		use world;
		
		create table countries(
			acronimo  integer  primary key not null,
			name      varchar(50),
			region    varchar(50),
			code      integer
		);

		'code,0,,0,0,,,,,,0,,,'
		'region,2,,0,0,,,,,,0,,'