1
I am doing a search on the data anchor SQLITE3 inside my program and it returns values inside 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 filled variable point (1, 'Filipe', 'Alves'), (3, 'Filipe', 'Ferreira'))
Second blank point ()