Variable reset

0

I am doing a search in the SQLITE3 data loop inside my program and it returns values into my variable, however when I make a condition to be executed for when the value is filled it returns empty, I am beginner in BD Python and Kivy:

class StudentDB (BoxLayout):

prim_nome = ObjectProperty()
ultimo_nome = ObjectProperty()
matricula = ObjectProperty()
lista_estudante = ObjectProperty()
bix1 = BoxLayout(orientation='vertical')
select = ()

def consultadb(self):
    # Limpa lista
    del self.lista_estudante.adapter.data[:]

    # Define var select pro caso dos retornos estarem brancos ele ainda estar setado como tupla
    # Acerta texto
    self.prim_nome.text = self.prim_nome.text.capitalize()
    self.prim_nome.text = self.prim_nome.text.strip()
    self.ultimo_nome.text = self.ultimo_nome.text.capitalize()
    self.ultimo_nome.text = self.ultimo_nome.text.strip()

    # Define se os campos estão preenchidos
    if self.prim_nome.text or self.ultimo_nome.text or self.matricula.text:
        # Consulta banco de dados
        if self.prim_nome.text == '*':
            select = cursor.execute('SELECT * FROM alunos2')
        elif self.prim_nome.text:
            select = cursor.execute('SELECT * FROM alunos2 WHERE nome = ?', [self.prim_nome.text])
        elif self.ultimo_nome.text:
            select = cursor.execute('SELECT * FROM alunos2 WHERE sobrenome = ?', [self.ultimo_nome.text])
        elif self.matricula.text:
            select = cursor.execute('SELECT * FROM alunos2 WHERE mat = ?', [int(self.matricula.text)])
        # Se o retorno estiver em branco exibe critica
        # Coloquei esse print pra ver o valor retornado para a consulta e aqui ele parece preenchido
        print("Primeiro ponto variavel preenchida ")
        print(tuple(select))

        if tuple(select) == ():
            # coloquei esse print pra ver o valor retornado dentro da função e aqui ele está vazio...
            print("Segundo ponto em branco")
            print(tuple(select))
            self.bix1.add_widget(Label(text='Aluno não encontrado'))
            self.bix1.add_widget(Button(text='Ok', on_press=lambda x: popup.dismiss()))
            popup = Popup(title='Não encontrado', content=self.bix1,
                          size_hint=(None, None), size=(200, 150), auto_dismiss=True)
            popup.open()
        # Se o retorno estiver ok então popula tabela com cada um dos valores retornados
        else:
            print(tuple(select))
            for i in select:
                print('entrei no for')
                dads = i
                nome_aluno = dads[1] + ' ' + dads[2]
                # incluir a informação na lista
                self.lista_estudante.adapter.data.extend([nome_aluno])
                # resetar a lista
                self.lista_estudante._trigger_reset_populate()

The prints appear like this:

First variable point filled (1, 'Filipe', 'Alves'), (3, 'Filipe', 'Ferreira'))

Second blank point ()

    
asked by anonymous 09.08.2017 / 00:30

1 answer

0

Where the prints are, change to:

print("Primeiro ponto variavel preenchida ")
alunos = tuple(select)
print(alunos)

if len(alunos) <= 0:

When you use tuple(select)) , you execute the select twice. For some reason, your cursor may be returning blank in the second query.

To see if the tuple is empty, it is better to use len than o == () .

    
09.08.2017 / 00:42