Exemple #1
0
def getLast(tblName=None, val="id", ordBy="id"):
    ''' Funcao para trazer o ultimo elemento ou data de uma 
        Tabela na base de dados. 
        Retorna uma tupla, com (Bool e Val)
        Args:
            tblName= Nome da tabela que vamos quere o id 
            val = o valor ou nome
            ordBy= Ordernar por ( e aconselhavel usar o mesmo que o "val")
        '''
    bOK = False
    scrpt = "select " + val + " from " + tblName + " order by " + ordBy + " DESC LIMIT 1"
    quer = QSqlQuery()
    bOK = quer.exec_(scrpt)
    if not bOK:
        last = -99
        verbTxt = quer.lastError.text()
        msg.error("error " + str(verbTxt))
        return (bOK, last)
    else:
        bNums = quer.first()
        if bNums:
            last = quer.value(0)
        else:
            last = 0
        return (bOK, last)
Exemple #2
0
def multLineSelect(scpt):
    """Metodo para executar select de multilinhas"""
    try:
        quer = QSqlQuery()
        b_Exec = quer.exec_(scpt)
        if b_Exec:
            quer.last()
            fldRow = int(quer.at()) + 1
            fldCol = quer.record().count()
            quer.first()
            valOut = []
            for i in range(fldRow):
                valOut.append(None)
                colOut = []
                for j in range(fldCol):
                    colOut.append(quer.value(j))
                valOut[i] = colOut
                quer.next()
            return b_Exec, valOut
        else:
            verbTxt = quer.lastError().text()
            msg.error(txt="Error ", verbTxt=verbTxt)
            valOut = None
            return b_Exec, valOut
    except Exception:
        msg.error(txt="Error ",
                  verbTxt="Nao foi Possivel aceder a Base de Dados")
        valOut = None
        return b_Exec, valOut
Exemple #3
0
def deleteVal(tblName=None, cond=None, conVal=None, condQuot=None):
    """
        Metodo para atualizar dados, na base de dados.
        
        Args:
            - tblName - Nome da tabela 
            - cond - onde queremos atualizar Ex:(id)
            - conVal - o valor Ex:(1)
            - condQuod - se sera quoted.
        """
    bOk, deldstr = script.deletScrpt(tblName=tblName,
                                     cond=cond,
                                     conVal=conVal,
                                     condQuot=condQuot)
    quer = QSqlQuery()
    if bOk:
        b_Exec = quer.exec_(deldstr)
        if b_Exec:
            txt = "Dados removidos onde " + str(cond) + " e igual a " + str(
                conVal)
            msg.Sucessos(txt)
            return True
        else:
            verbTxt = quer.lastError().text()
            msg.error(txt="Error ao Remover os dados Na tabela " +
                      str(tblName),
                      verbTxt=verbTxt)
            return False
    else:
        msg.error()
        return False
Exemple #4
0
 def getUserInfo(self):
     psw = self.LEPassword.text()
     user = self.LEName.text()
     idx, username, user_level = None, None, None
     query = '''SELECT tbl1.id, username, user_level, tbl2.nome 
             FROM public.log_user as tbl1 
             inner join log_level as tbl2 on tbl1.user_level = tbl2.id
             where username like '{nome}' and user_psw='{psw}' and activo = True;
             '''.format(nome=user, psw=psw)
     toExe = QSqlQuery()
     bOK = toExe.exec_(query)
     if bOK:
         bOK = toExe.first()
         if bOK:
             idx = toExe.value(0)
             username = toExe.value(1)
             user_level = toExe.value(2)
         else:
             QT_msg.aviso(
                 txt=
                 "Username or password doesnt exist, Please try a valid one."
             )
     else:
         QT_msg.aviso(
             txt="Please try a valid information dont try SQL Commands.")
     return bOK, (idx, username, user_level)
    def vefSaved(self, lstdictIN=None):
        toSave = QSqlQuery()
        bOK = True
        msgOut = "Operacao Realizada Com sucesso"
        for dictIN in lstdictIN:
            quer = "SELECT id_amost_comp_sexo, class_comp, n_indiv from public.t_comp_amost where class_comp= '{class_comp}' and id_amost_comp_sexo= {id_amost_comp_sexo} ".format(
                **dictIN)
            _, lstOut = FuncSQL.anySelectScript(scpt=quer)
            if lstOut[0] == dictIN['id_amost_comp_sexo'] and lstOut[
                    1] == dictIN['class_comp'] and lstOut[2] == dictIN[
                        'n_indiv']:
                bOK = True
            elif lstOut[0] == dictIN[
                    'id_amost_comp_sexo'] and lstOut[1] != dictIN[
                        'class_comp'] or lstOut[2] != dictIN['n_indiv']:
                quer = ''' UPDATE public.t_comp_amost SET n_indiv= {n_indiv}
                         WHERE class_comp= '{class_comp}' and id_amost_comp_sexo= {id_amost_comp_sexo};'''.format(
                    **dictIN)
                bOK = toSave.exec_(quer)

            else:
                bOK = False
                vTxt = toSave.lastError().text()
                QT_msg.error(txt='Error Nao sera possivel realizar a opercao',
                             verbTxt=vTxt)
                msgOut = None
                break
        return bOK, msgOut
 def toSave(self):
     lstIn = self.getVal()
     lstInserted = []
     for val in lstIn:
         bOK, idx = FuncSQL.getLast(tblName=self.tblName)
         newLast = int(idx) + 1
         if bOK:
             classeCom, n_indiv = val
             dictVal = {
                 'id': newLast,
                 'id_amost_comp_sexo': self.Id,
                 'class_comp': classeCom,
                 'n_indiv': n_indiv
             }
             quer = '''INSERT INTO public.t_comp_amost
                         (id, id_amost_comp_sexo, class_comp, n_indiv)
                         VALUES ({id}, {id_amost_comp_sexo}, '{class_comp}', {n_indiv});'''.format(
                 **dictVal)
             toSave = QSqlQuery()
             bOK = toSave.exec_(quer)
             if bOK == False:
                 lstInserted.append(dictVal)
     bOK, msgOut = self.vefSaved(lstdictIN=lstInserted)
     self.bOK = bOK, msgOut
     self.close()
Exemple #7
0
def insertVal(tblName=None,
              val=None,
              ordBy=None,
              lstNames=None,
              lstVal=None,
              lstQuot=None):
    """ Funcao usada para inserir valores na base de dados,
        primeiro ela verifica se foi o primeiro elemento
        e none, caso seja None significa que o id e auto incremente
        entao ela excuta a funca getLast
        Args:
            tblName = Nome da tabela
            val = o Nome da coluna na base de dados
            ordBy =  o nome da coluna que devera ser ordenada
            lstNames = lista dos nomes das colunas
            lstVal = lista dos valores correspondente
            lstQuot =  lista do valores se vamos querer colocar eles entre '' ou nao (interios e booleanos fica entre '', mas os outros nao)
    """
    bOK = False
    msgOut = None
    if tblName is None or lstNames is None or lstVal is None:
        msg.error(
            'Nao foi possivel criar o script, porque nao foi passado todos argumentos.'
        )
        return bOK
    else:
        if lstVal[0] is None or lstVal[0] is '':
            if val is None and ordBy is None:
                returndBok, last = getLast(tblName=tblName)
            else:
                returndBok, last = getLast(tblName=tblName,
                                           val=val,
                                           ordBy=ordBy)
            if returndBok:
                lstVal[0] = str(int(last) + 1)
        bOK, istStr = script.insertScp(tblName=tblName,
                                       lstNames=lstNames,
                                       lstVals=lstVal,
                                       lstQuot=lstQuot)
        quer = QSqlQuery()
        if not bOK:
            msg.error("Erro ao criar o script")
            return bOK, None
        else:
            istStr = istStr.replace(" 'NULL',", " NULL,")
            b_Exec = quer.prepare(istStr)
            if b_Exec:
                b_Exec = quer.exec_(istStr)
                if b_Exec:
                    msgOut = "Dados Inseridos"
                else:
                    verbTxt = quer.lastError().text()
                    msg.error("Error: Nao sera possivel Inserir os Dados.",
                              verbTxt=str(verbTxt))
            else:
                verbTxt = quer.lastError().text()
                msg.error("Error: Nao sera possivel Inserir os Dados.",
                          verbTxt=str(verbTxt))
        return b_Exec, msgOut
Exemple #8
0
def updateVal(tblName=None,
              lstNames=None,
              lstVals=None,
              lstQuot=None,
              cond=None,
              conVal=None,
              condQuot=None):
    """
        Metodo para atualizar dados, na base de dados.
        
        Args:
            - tblName - Nome da tabela 
            - lstNames - Lista dos campos que vamos querer autualizar
            - lstVals - os Valores dos campos
            - lstQuot - List se of valores seram Quotes
            - cond - onde queremos atualizar Ex:(id)
            - conVal - o valor Ex:(1)
            - condQuod - se sera quoted.
        """
    msgOut = None
    bOK = False
    bOk, updstr = script.updateScp(tblName=tblName,
                                   lstNames=lstNames,
                                   lstVals=lstVals,
                                   lstQuot=lstQuot,
                                   cond=cond,
                                   conVal=conVal,
                                   condQuot=condQuot)
    quer = QSqlQuery()
    if bOk:
        updstr = updstr.replace(" 'NULL' ,", " NULL,")
        b_Exec = quer.exec_(updstr)
        if b_Exec:
            txt = str(cond) + " e igual a " + str(conVal)
            msgOut = "Dados atualizados onde " + str(txt)
            bOK = True
        else:
            verbTxt = quer.lastError().text()
            msg.error(txt="Error ao atulizar os dados Na tabela " +
                      str(tblName),
                      verbTxt=verbTxt)
            bOK = False
    else:
        msg.error()
        bOK = False
    return bOK, msgOut
Exemple #9
0
def anySelectScript(scpt=None, fldNum=None):
    "::>> Metodo para execurar query de select que retorna uma linha"

    quer = QSqlQuery()
    b_Exec = quer.exec_(scpt)
    valOut = []
    if b_Exec:
        if quer.first():
            if fldNum is None:
                fldNum = quer.record().count()
            for i in range(fldNum):
                valOut.append(quer.value(i))
        else:
            b_Exec = False
    else:
        verbTxt = quer.lastError().text()
        msg.error(txt="Error ", verbTxt=verbTxt)
    return b_Exec, valOut
Exemple #10
0
def anySelectScript(scpt=None, fldNum=None):

    quer = QSqlQuery()
    b_Exec = quer.exec_(scpt)
    valOut = []
    if b_Exec:
        quer.first()
        if quer.isValid():
            if fldNum is None:
                fldNum = quer.record().count()
            for i in range(fldNum):
                valOut.append(quer.value(i))
        else:
            b_Exec = False
    else:
        verbTxt = quer.lastError().text()
        msg.error(txt="Error ", verbTxt=verbTxt)
    return b_Exec, valOut