예제 #1
0
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!')
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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()
예제 #5
0
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()
예제 #6
0
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
예제 #7
0
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()
예제 #8
0
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()
예제 #9
0
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
예제 #10
0
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()
예제 #11
0
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()
예제 #13
0
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
예제 #14
0
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
예제 #15
0
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
예제 #16
0
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
예제 #17
0
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()
예제 #18
0
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()
예제 #19
0
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
예제 #20
0
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()
예제 #22
0
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
예제 #23
0
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()
예제 #24
0
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()
예제 #25
0
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()
예제 #26
0
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
예제 #27
0
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()
예제 #28
0
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
예제 #30
0
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