Beispiel #1
0
 def execute(self):
     Console.clear()
     data = self.entradaEditor.text.get("1.0", END)
     root = ascparse.parse(data)
     AST = Ast(root)
     AST.execute()
     AST.getGraph()
Beispiel #2
0
    def execute(self, env):
        print("Se ejecutó la instrucción 'CREATE TABLE'")
        tableName = self.exp1.getValue(env)

        table = {}
        pkList = []

        for attr in self.attributesList:
            for key in attr:
                if key == 'len':
                    attr[key] = attr[key].getValue(env)
                elif key == 'pk':
                    index = self.attributesList.index(attr)
                    pkList.append(index)
            table[attr['id']] = attr

            symbol = (attr['id'], attr['type'], tableName)
            SymbolTable.add(symbol)

        result = createTable(env.currentDB, tableName,
                             len(self.attributesList))
        Console.add('CREATE TABLE: %s' % result)

        if (len(pkList) != 0):
            result = alterAddPK(env.currentDB, tableName, pkList)
            Console.add('ALTER ADD PK: %s' % result)

        env.addTable(env.currentDB, {tableName: table})
Beispiel #3
0
    def execute(self, env):
        print("Se ejecutó la instrucción 'SELECT'")
        value = self.expression.getValue(env)
        col = self.getAsColumn(value)

        header = col[0]
        table = [col[1]]
        strTable = tabulate(table, headers=header, tablefmt="psql")

        Console.add(strTable)
Beispiel #4
0
 def execute(self, env):
     #Se debe evaluar que tipo de DROP viene: DROP COLUMN, DROP CONSTRAINT
     if self.accion == 'COLUMN':
         print("Se ejecutó la instrucción 'ALTER TABLE DROP COLUMN'")
         resultado = alterDropColumn(env.currentDB,
                                     self.tabla.getValue(env),
                                     self.columnNumber.getValue(env))
         Console.add(resultado)
     elif self.accion == 'CONSTRAINT':
         print("Se ejecutó un DROP CONSTRAINT")
Beispiel #5
0
 def execute(self, env):
     print("Se ejecutó la instrucción 'ALTER TABLE ADD'")
     #Aqui se deben validar las acciones
     #Las acciones pueden ser
     #aqui se debe evaluar la acción relacionada al alter
     #Acciones: ADD CHECK, ADD CONSTRAINT, ADD FOREIGN KEY
     print("Se ejecutó una función ADD COLUMN.")
     resultado = alterAddColumn(env.currentDB, self.tabla.getValue(env),
                                self.default.getValue(env))
     Console.add(resultado)
Beispiel #6
0
 def execute(self, env):
     print("Se ejecutó la instrucción 'ALTER TABLE'")
     #aqui se debe evaluar la acción relacionada al alter
     #Acciones: RENAME SIMPLE O RENAME COLUMN
     if self.accion == 'COLUMN':
         print("Se ejecutó la función RENAME COLUMN")
     elif self.accion == 'TO':
         print("Se ejecutó la función RENAME TO")
         resultado = alterTable(env.currentDB, self.exp1.getValue(env),
                                self.exp2.getValue(env))
         Console.add(resultado)
Beispiel #7
0
    def execute(self, env):
        print("Se ejecutó la instrucción 'DELETE'")

        #Lista 'registros' de prueba, remplazarla por la tabla enviada del where
        registros = [[{
            'idusuario': {
                'id': 'idusuario',
                'type': 'integer',
                'not_null': True,
                'pk': True
            }
        }, {
            'nombre': {
                'id': 'nombre',
                'type': 'string',
                'not_null': True,
                'pk': True
            }
        }, {
            'direccion': {
                'id': 'direccion',
                'type': 'string',
                'not_null': True,
                'pk': False
            }
        }],
                     [['1', 'Brayan', 'guate'], ['2', 'Glendy', 'guate'],
                      ['3', 'otro', 'guate']]]

        listpk = []  #Lista de llave o llaves primarias de la tabla [0,1]
        cont = 0
        for dicc1 in registros[0]:  #accedemos a la lista
            for atributo, dicc2 in dicc1.items(
            ):  #acedemos a cada clave del diccionario: idusuario, nombre, dirección
                for elem, valor in dicc2.items(
                ):  #accedemos a cada clave y valor de cada diccionario: id,idusuario,type,integer...

                    if (elem == 'pk' and valor == True):
                        listpk.append(cont)

                cont = cont + 1

        cont2 = 0
        for elem in registros[1]:
            listdel = []  #Lista de llave o llaves a eliminar
            for elem2 in listpk:
                listdel.append(registros[1][cont2][elem2])
            cont2 = cont2 + 1

            resultado = delete(env.currentDB, self.tabla.getValue(env),
                               listdel)  #Funcion eleiminar
            Console.add(resultado)
Beispiel #8
0
    def __init__(self):
        self.window = Tk()

        self.window.title("Query Tool")
        self.window.minsize(900, 600)

        # MENÚ 'Principal':
        main_menu = Menu(self.window)
        self.window['menu'] = main_menu

        main_menu.add_command(label='Abrir',
                              command=self.open,
                              underline=0,
                              accelerator="Ctrl+a",
                              compound=LEFT)

        main_menu.add_command(label='Ejecutar',
                              command=self.execute,
                              underline=0,
                              accelerator="Ctrl+r",
                              compound=LEFT)

        # INPUT:
        self.notebook = ttk.Notebook(self.window, height="350", width="900")
        self.notebook.pack()
        # Editor de texto
        frame = tkinter.Frame(self.notebook, bg='white')
        self.notebook.add(frame, text="Entrada")
        self.entradaEditor = EntradaEditor(frame)

        # OUTPUT:
        self.out = ttk.Notebook(self.window, height="185", width="900")
        self.out.pack()
        # Consola
        frame = tkinter.Frame(self.out, bg='white')
        self.out.add(frame, text="Consola")
        Console.create(frame)
        # Tabla de reporte de errores
        frame = tkinter.Frame(self.out, bg='white')
        self.out.add(frame, text="Reporte de errores")
        ErrorTable.create(frame)
        # Tabla de simbolos
        frame = tkinter.Frame(self.out, bg='white')
        self.out.add(frame, text="Tabla de Símbolos")
        SymbolTable.create(frame)
        """ initInput = "./Scripts/Consultas.sql"
        data = open(initInput).read()
        self.entradaEditor.text.insert(END, data + "\n") """

        self.window.mainloop()
Beispiel #9
0
 def execute(self, env):
     print("Se ejecutó la instrucción 'DROP DATABASE'")
     resultado = dropDatabase(self.expression.getValue(env))
     #print(self.expression.getValue(env))
     Console.add(resultado)
Beispiel #10
0
 def execute(self, env):
     print("Se ejecutó la instrucción 'TRUNCATE ó DELETE * FROM'")
     resultado = truncate(env.currentDB, self.tabla.getValue(env))
     Console.add(resultado)
Beispiel #11
0
 def execute(self, env):
     print("Se ejecutó la instrucción 'DROP TABLE'")
     resultado = dropTable(env.currentDB, self.expression.getValue(env))
     Console.add(resultado)
     Console.add(self.expression.getValue(env))
Beispiel #12
0
 def execute(self, env):
     print("Se ejecutó la instrucción 'SHOW DATABASE'")
     resultado = showDatabases()
     #print(self.expression.getValue(env))
     Console.add(resultado)
Beispiel #13
0
 def execute(self, env):
     print("Se ejecutó la instrucción 'ALTER DATABASE'")
     resultado = alterDatabase(self.exp1.getValue(env),
                               self.exp2.getValue(env))
     # print(self.expression.getValue(env))
     Console.add(resultado)