Skip to content

Parte 3: Inserindo dados na tabela

Nossa tabela foi criada, mas ainda não possui nenhum dado. Para inserir dados na tabela utilizamos o comando SQL:

INSERT INTO NOME_DA_TABELA (NOMES_DAS_COLUNAS) VALUES (VALORES_DAS_COLUNAS)`

Por exemplo, na tabela dados_pessoais, que usamos de exemplo na parte 2, poderíamos adicionar uma nova linha com o comando

INSERT INTO dados_pessoais (nome_da_rua,cpf) VALUES ('R. Quatá','123.456.789-00');

Exercício 03

Adicione a definição da classe Note no arquivo database.py:

from dataclasses import dataclass

@dataclass
class Note:
    id: int = None
    title: str = None
    content: str = ''
Observação: o código acima só é válido a partir do Python 3.7. Se você está usando uma versão mais antiga do Python, substitua esse código pelo código abaixo:

class Note:
    def __init__(self, id=None, title=None, content=''):
        self.id = id
        self.title = title
        self.content = content

Crie um método add(self, note) na classe Database, que recebe um objeto do tipo Note e insere seus dados no banco de dados.

Para inserir os dados no banco de dados, será necessário construir um comando SQL similar ao comando a seguir:

INSERT INTO dados_pessoais (nome_da_rua,cpf) VALUES ('R. Quatá','123.456.789-00');

Curiosidade

Note que a coluna definida como chave primária não está entre os valores. O próprio SQLite atribui o valor da coluna como o próximo número disponível.

Os valores a serem inseridos no banco de dados devem ser obtidos através do objeto do tipo Note recebido como argumento.

Para executar os comandos no banco de dados através do Python, utilizaremos novamente o método execute do atributo conn.

Importante 1

Quando for adicionar strings no banco de dados, lembre-se de colocar as aspas ao redor dos valores.

Importante 2

Depois de chamar o execute com o comando de inserção você precisa chamar o método commit() do atributo conn para que a inserção seja executada. Isso é necessário porque as modificações na conexão atual só são efetivamente enviadas todas de uma vez para o banco de dados após o commit.

Procure um exemplo com INSERT na documentação a seguir 👉 Documentação.

Passando nos testes

Rode os testes e se tudo estiver correto, o teste com o nome exercicio_03_add_rows deverá passar com sucesso.

Para testar as novas funcionalidades no banco de dados, adicione as linhas a seguir no arquivo exemplo_de_uso.py, execute o arquivo e depois visualize o resultado no DB Browser clicando na aba Browse Data (observação: você vai precisar importar a classe Note nesse arquivo):

db.add(Note(title='Pão doce', content='Abra o pão e coloque o seu suco em pó favorito.'))
db.add(Note(title=None, content='Lembrar de tomar água'))

Question

O que o trecho de código a seguir faz?

db.add(Note(title='Pão doce', content='Abra o pão e coloque o seu suco em pó favorito.'))
  • Cria uma tabela nova no banco de dados.
  • Cria somente um objeto do tipo Note.
  • Cria um objeto do tipo Note e insere os dados no banco de dados.
  • Nenhuma das opções anteriores.

Resposta

Um objeto do tipo Note é criado com o seguinte código: Note(title='Pão doce', content='Abra o pão e coloque o seu suco em pó favorito.')

Esse objeto criado é passado como argumento para o método add da classe Database que criamos no exercício anterior.

Esse método é responsável por inserir os dados da nota no banco de dados.

Importante

Toda vez que você executar o arquivo exemplo_de_uso.py esses dados serão adicionados novamente ao banco. Para começar um novo banco, basta apagar o arquivo banco.db e executar o arquivo novamente.

Quando tiver terminado, siga para a próxima parte do handout.