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:
Por exemplo, na tabela dados_pessoais
, que usamos de exemplo na parte 2, poderíamos adicionar uma nova linha com o comando
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 = ''
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:
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?
- 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.