def CriarIndices(table): print('Criando indíces...') print('') print('Limpando...') session = db.getSession() dfIdx = db.consultarSQLDataFrame('PRAGMA index_list([' + table + ']);') for idx in dfIdx['name']: sql = 'DROP INDEX [' + idx + ']' print(sql) session.execute(sql) print('') print('') sql = 'SELECT * FROM [' + table + '] WHERE 0=1' print(sql) df = db.consultarSQLDataFrame(sql) print('Criando...') for col in df.columns: sql_create_index = 'CREATE INDEX [idx_' + table + '_' + col + '] ON [' + table + ']([' + col + '])' print(sql_create_index) session.execute(sql_create_index) session.commit() session.close() print('') print('Finalizado!')
def Association(idTabela, filtro, qtd_regras): tabela = imp.ObterTabela(idTabela) sql = dbTab.GerarSQL(idTabela, 'S') if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '': if filtro == 'H': sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')' elif filtro == 'A': sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')' lista = db.consultarSQL(sql) regras = desc.Association(lista, int(qtd_regras)) dp_regras = json.dumps(regras) session = db.getSession() tabDesc = session.query(db.TabelaDescricao).filter_by( id_tabela=idTabela).filter_by(id_alg=id_alg_rule_association).first() if tabDesc == None: tabDesc = db.TabelaDescricao(None, idTabela, id_alg_rule_association, dp_regras, datetime.now()) session.add(tabDesc) else: tabDesc.modelo = dp_regras tabDesc.dt_processo = datetime.now() session.commit() session.close() return tabDesc
def ListarExibicaoColuna(idTabela, idColuna): session = db.getSession() lista = session.query(db.ExibicaoColuna).filter_by( id_tabela=idTabela).filter_by(id_coluna=idColuna).all() session.close() return lista
def SalvarColuna(coluna): session = db.getSession() if int(coluna.id) == 0: coluna.id = None session.add(coluna) else: iid = coluna.id obj2 = session.query(db.Coluna).filter_by(id=iid).first() obj2.id_coluna_cid = coluna.id_coluna_cid obj2.id_tabela = coluna.id_tabela obj2.nome = coluna.nome obj2.sql = coluna.sql obj2.tipo = coluna.tipo obj2.titulo = coluna.titulo obj2.descricao = coluna.descricao obj2.desabilitado = coluna.desabilitado obj2.classe = coluna.classe obj2.fl_aluno = coluna.fl_aluno obj2.chave_estrangeira = coluna.chave_estrangeira obj2.id_tabela_fk = coluna.id_tabela_fk obj2.id_coluna_fk = coluna.id_coluna_fk obj2.val_aluno_risco = coluna.val_aluno_risco obj2.sinonimos = coluna.sinonimos session.commit() session.close()
def SalvarTabelaPredicaoAlg(iid_tabPred, listaModeloPred, lstPesos): """ Salvar dados do que foi previsto """ session = db.getSession() for modeloPred in listaModeloPred: iid_alg = modeloPred['id_alg'] mat_conf = json.dumps(np.array(modeloPred['MatrizConfisao']).tolist()) obj = session.query(db.TabelaPredicaoAlg).filter_by( id_tabela_predicao=iid_tabPred).filter_by(id_alg=iid_alg).first() if obj == None: obj = db.TabelaPredicaoAlg(None, iid_tabPred, iid_alg, modeloPred['Modelo'], modeloPred['Nome'], modeloPred['Pontos'], modeloPred['TxAcerto'], mat_conf) session.add(obj) else: obj.modelo = modeloPred['Modelo'] obj.pontos = modeloPred['Pontos'] obj.tx_acerto = modeloPred['TxAcerto'] obj.matriz_confusao = mat_conf session.commit() session.close()
def ObterPainel(iid): if int(iid) == 0: return db.Painel(0, '', 'P', '') else: session = db.getSession() obj = session.query(db.Painel).filter_by(id=iid).first() session.close() return obj
def LimparDadosColunaClasse(nomeTabela, nomeColunaClasse): sqlLimparColuna = 'UPDATE "' + nomeTabela + '" SET "' + nomeColunaClasse + '" = \'\' WHERE "' + nomeColunaClasse + '" LIKE \'LA :: Prev%\' ' print(sqlLimparColuna) session = db.getSession() session.execute(sqlLimparColuna) session.commit() session.close()
def SalvarMensagem(msg): session = db.getSession() obj = session.query(db.Mensagem).filter_by(id=msg.id).first() obj.descricao = msg.descricao obj.descartado = msg.descartado session.commit() session.close()
def ObterFonte(iid): if iid == '0': return db.FonteDados('0', '', '') else: session = db.getSession() obj = session.query(db.FonteDados).filter_by(id=iid).first() session.close() return obj
def AtualiarClasse(nomeTabela, nomeColunaClasse, classe_prev, rowid): sqlAtulizarColuna = 'UPDATE "' + nomeTabela + '" SET "' + nomeColunaClasse + '" = \'' + classe_prev + '\' WHERE rowid = ' + str( rowid) print(sqlAtulizarColuna) session = db.getSession() session.execute(sqlAtulizarColuna) session.commit() session.close()
def ObterTabela(iid): if iid == '0': return db.Tabela('0', '', '') else: session = db.getSession() obj = session.query(db.Tabela).filter_by(id=iid).first() session.close() return obj
def RemoverColExibicao(idTabela, idColuna, idColunaLookup): session = db.getSession() obj = session.query(db.ExibicaoColuna).filter_by(id_tabela=idTabela).filter_by(id_coluna=idColuna).filter_by(id_coluna_fk=idColunaLookup).first() if obj != None: session.delete(obj) session.commit() session.close()
def ObterColuna(iid): if int(iid) == 0: return db.Coluna(iid, 100, 0, '', '', 'T', '', '', False, False, False, False, None, None, None, None) else: session = db.getSession() obj = session.query(db.Coluna).filter_by(id=iid).first() session.close() return obj
def ObterModeloPredicaoAlg(idTabPredAlg): session = db.getSession() obj = session.query( db.TabelaPredicaoAlg).filter_by(id=idTabPredAlg).first() session.close() obj.clf = pickle.loads(obj.modelo) return obj
def ObterColunaIdAluno(idTabela=None): session = db.getSession() if idTabela != None: obj = session.query(db.Coluna).filter_by(id_tabela=idTabela).filter_by(fl_aluno=True).first() else: obj = session.query(db.Coluna).filter_by(fl_aluno=True).first() session.close() return obj
def ObterVisao(iid): session = db.getSession() if int(iid) != 0: obj = session.query(db.Visao).filter_by(id=iid).first() else: obj = db.Visao(int(iid)) session.close() return obj
def SalvarMensagens(tabela, msgs): print( '===============================================================================================' ) print('Salvar Mensagens') listaColunas = meta.ListarColunas(tabela.id) sqlDelete = 'DELETE FROM mensagem WHERE id_tabela = ' + str(tabela.id) print(sqlDelete) session = db.getSession() session.execute(sqlDelete) coluna_identif_aluno = None for col in listaColunas: if (col.fl_aluno): coluna_identif_aluno = col break dt_geracao = datetime.now() for msg in msgs: rowid = msg['Aluno'] sql_busca_usuario = 'SELECT U.id FROM "' + tabela.nome + '" AS T0 INNER JOIN usuario AS U ON "' + coluna_identif_aluno.nome + '" = U.login WHERE T0.rowid = ' + str( rowid) + ' LIMIT 1' print(sql_busca_usuario) id_usuario_aluno = session.execute( sql_busca_usuario).fetchall()[0]['id'] coluna = ObterColunaPorNomeLista(listaColunas, msg['Campo']) print(coluna.titulo) desc_mensagem = 'Na característica "' + coluna.titulo + '" esta informado: "' + msg[ 'ValAtual'] + '".\nRecomendamos que seja modificado para "' + msg[ 'ValSuger'] + '"' print(desc_mensagem) mensagem = db.Mensagem(None) mensagem.id_tabela = tabela.id mensagem.id_coluna = coluna.id mensagem.id_usuario_aluno = id_usuario_aluno mensagem.val_atual = msg['ValAtual'] mensagem.val_suger = msg['ValSuger'] mensagem.descartado = 'N' mensagem.lido = 'N' mensagem.dt_gerado = dt_geracao mensagem.descricao = desc_mensagem session.add(mensagem) session.commit() session.close()
def ChecarLogin(llogin, ssenha): session = db.getSession() usuario = session.query(db.Usuario).filter_by(login=llogin).filter_by(senha=ssenha).first() if usuario == None: return False, '' else: return True, usuario.tipo session.close()
def ObterColunaClasse(idTabela=None): session = db.getSession() if idTabela != None: obj = session.query(db.Coluna).filter_by(id_tabela=idTabela).filter_by(classe=True).first() else: obj = session.query(db.Coluna).filter_by(classe=True).first() session.close() if obj != None: return obj.nome, obj.id return '', None
def GerarColunas(table): session = db.getSession() obj = session.query(db.Tabela).filter_by(nome=table).first() sql = 'pragma table_info([' + table + '])' resultado = session.execute(sql).fetchall() for row in resultado: coluna = db.Coluna(None, int(row['cid']) + 1, obj.id, row['name'], row['name'], 'T', row['name'], '', False, False, False, False, None, None, None) session.add(coluna) session.commit()
def AdicionarColExibicao(id_tabela, id_coluna, id_col_sel_lookup): session = db.getSession() colunaLookup = session.query(db.Coluna).filter_by(id=id_col_sel_lookup).first() obj = session.query(db.ExibicaoColuna).filter_by(id_tabela=id_tabela).filter_by(id_coluna_fk=id_col_sel_lookup).first() if obj == None: obj = db.ExibicaoColuna(None, id_tabela, id_coluna, colunaLookup.id_tabela, id_col_sel_lookup) session.add(obj) session.commit() session.close()
def ListarTabelas(idFonte=0): session = db.getSession() if idFonte == 0: lista = session.query(db.Tabela).all() else: lista = session.query(db.Tabela).filter_by(id_fonte_dados=idFonte).all() session.close() for tab in lista: tab.comandoNome = '<a href="/edttabela?id=' + str(tab.id) + '">' + tab.nome + '</a>' return lista
def CriarTabelaDoSql(sql, nome): sql_dropTable = 'DROP TABLE IF EXISTS [' + nome + '];' sql_createTable = ' CREATE TABLE [' + nome + '] AS ' + sql print(sql_dropTable) print(sql_createTable) session = db.getSession() resultado = session.execute(sql_dropTable) resultado = session.execute(sql_createTable) session.commit() session.close()
def GerarColunasComSQL(table, sql): session = db.getSession() obj = session.query(db.Tabela).filter_by(nome=table).first() sql = 'SELECT * FROM (' + sql + ') AS T WHERE 0=1' df = db.consultarSQLDataFrame(sql) i_conta = 0 for col in df.columns: i_conta+=1 coluna = db.Coluna(None, i_conta, obj.id, col, col, 'T', col, '', False, False, False, False, None, None, None) session.add(coluna) session.commit()
def SalvarPainel(painel): session = db.getSession() if int(painel.id) == 0: painel.id = None session.add(painel) else: iid = painel.id obj2 = session.query(db.Painel).filter_by(id=iid).first() obj2.nome = painel.nome obj2.tipo = painel.tipo obj2.modelo = painel.modelo session.commit() session.close()
def ListarUsuario(): session = db.getSession() lista = session.query(db.Usuario).all() session.close() for usuario in lista: usuario.comandoNome = '<a href="/defusuario?id=' + str(usuario.id) + '">' + usuario.nome + '</a>' if usuario.tipo == 'P': usuario.ds_tipo = 'Professor' elif usuario.tipo == 'E': usuario.ds_tipo = 'Estudante' elif usuario.tipo == 'A': usuario.ds_tipo = 'Analista' return lista
def SalvarFonte(fonte): session = db.getSession() if fonte.id == '0': fonte.id = None session.add(fonte) else: iid = fonte.id obj2 = session.query(db.FonteDados).filter_by(id=iid).first() obj2.nome = fonte.nome obj2.tipo = fonte.tipo obj2.valor = fonte.valor session.commit() session.close()
def ObterAlunosParaRecomendacoes(id_aluno): listaMensanges = [] nomeAluno = '' tx_acerto = 0 nomeColuna, id_colunaClasse = meta.ObterColunaClasse() colunaClasse = meta.ObterColuna(id_colunaClasse) tabela = imp.ObterTabela(colunaClasse.id_tabela) colunaIdAluno = meta.ObterColunaIdAluno(colunaClasse.id_tabela) listaAlunos = [] listaColunas = [] listaColunas.append(colunaIdAluno.id) listaColunas.append(colunaClasse.id) sql = dbTab.GerarSQL(tabela.id, 'O', listaColunas) dfAlunos = db.consultarSQLDataFrame(sql) session = db.getSession() for index, row in dfAlunos.iterrows(): usuario = session.query( db.Usuario).filter_by(login=row[colunaIdAluno.nome]).first() usuario.selecionado = False if id_aluno == usuario.id: nomeAluno = usuario.nome usuario.selecionado = True listaAlunos.append(usuario) session.close() algPredicao = ObterTabelaPredicao(tabela.id) for alg in algPredicao.Alg: if alg.selecionado: tx_acerto = alg.tx_acerto if id_aluno != 0: listaMensanges = ObterRecomendacoesPorAluno(id_aluno) return dict(listaAlunos=listaAlunos, listaMensanges=listaMensanges, id_aluno=id_aluno, nomeAluno=nomeAluno, tx_acerto=tx_acerto)
def ObterColunaClasse(idTabela): session = db.getSession() obj = session.query(db.Coluna).filter_by(id_tabela=idTabela).filter_by(classe=True).first() session.close() if obj != None: return obj.nome, obj.id else: listaExibicao = dbTab.ListarExibicao(idTabela) for colExib in listaExibicao: col = meta.ObterColuna(colExib.id_coluna_fk) if col.classe: return col.nome, col.id return '', None
def ObterRecomendacoesPorAluno(id_aluno): session = db.getSession() listaMensagens = session.query( db.Mensagem).filter_by(id_usuario_aluno=id_aluno).all() session.close() for msg in listaMensagens: msg.attHtml = dict() msg.attHtml['checked'] = '' msg.attHtml['disabled'] = '' if (msg.descartado == 'S'): msg.attHtml['checked'] = 'checked' msg.attHtml['disabled'] = 'disabled="disabled"' return listaMensagens