Parte 4: Consultando e selecionando dados
Muito bem, nós já conseguimos adicionar informações no nosso banco de dados, mas ele ainda não serve para muita coisa. Queremos que o nosso programa seja capaz de recuperar/consultar esses dados quando necessário. E é isso o que vamos fazer nesta parte do handout.
Bom, o próprio nome da linguagem (Structured Query Language - query = consulta
) já indica que o SQL nos permite consultar esses dados de alguma forma. Para este fim existe o comando SELECT
. Esse é um comando bastante flexível, que permite definir condições para a seleção (usando o operador WHERE
), combinar dados de tabelas diferentes (operação JOIN
), selecionar apenas um subconjunto das colunas disponíveis, etc. Nosso objetivo não é entrar nesse nível de detalhe, mas existem muitos recursos gratuitos de boa qualidade disponíveis na internet para quem se interessar. Um exemplo é o conteúdo da w3schools.
Para o propósito deste handout vamos usar o comando SELECT
da seguinte maneira:
No exemplo da tabela de dados pessoais, o comando para selecionar todas as linhas da tabela seria: SELECT identificador, nome_da_rua, cpf FROM dados_pessoais
Ao executar esse comando com o método conn.execute
, o valor devolvido será um sqlite3.Cursor
. Ele contém as linhas obtidas no banco de dados a partir da consulta e pode ser percorrida de forma parecida com o que fazemos com listas:
cursor = conn.execute("SELECT identificador, nome_da_rua, cpf FROM dados_pessoais")
for linha in cursor:
identificador = linha[0]
nome_da_rua = linha[1]
cpf = linha[2]
Exercício 04
Implemente o método get_all(self)
na classe Database
. Ele não recebe nenhum argumento e devolve uma lista de objetos do tipo Note
, com os valores obtidos do banco de dados.
Para esta tarefa, reutilize o código a seguir e faça as modificações necessárias para lidar com os dados das anotações.
cursor = conn.execute("SELECT identificador, nome_da_rua, cpf FROM dados_pessoais")
for linha in cursor:
identificador = linha[0]
nome_da_rua = linha[1]
cpf = linha[2]
Ao finalizar, rode os testes e se tudo estiver certo, o teste com o nome exercicio_04_select_rows
deverá passar com sucesso.
Para testar a nova funcionalidade no banco de dados, adicione as linhas a seguir no arquivo exemplo_de_uso.py
:
notes = db.get_all()
for note in notes:
print(f'Anotação {note.id}:\n Título: {note.title}\n Conteúdo: {note.content}\n')
Quando terminar, siga para a parte 5 do handout.