From cbfccc33d5466f146706bf5435598892e1b032f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tain=C3=A1=20Goulart?= Date: Wed, 22 May 2024 21:46:45 -0300 Subject: [PATCH] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20Tain=C3=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercicios/para-casa/1-criacao.py | 22 +++++++++++++++++ exercicios/para-casa/2-importar_csv.py | 25 ++++++++++++++++++++ exercicios/para-casa/3-lendo_csv.py | 24 +++++++++++++++++++ exercicios/para-casa/4-consultar_exibir.py | 13 ++++++++++ exercicios/para-casa/5-atualizando_dados.py | 20 ++++++++++++++++ exercicios/para-casa/6-remocao_dados.py | 16 +++++++++++++ exercicios/para-casa/7-exportar_csv.py | 17 +++++++++++++ exercicios/para-casa/exportados_livros.csv | 6 +++++ exercicios/para-casa/livraria.db | Bin 0 -> 12288 bytes exercicios/para-casa/livros.csv | 7 ++++++ 10 files changed, 150 insertions(+) create mode 100644 exercicios/para-casa/1-criacao.py create mode 100644 exercicios/para-casa/2-importar_csv.py create mode 100644 exercicios/para-casa/3-lendo_csv.py create mode 100644 exercicios/para-casa/4-consultar_exibir.py create mode 100644 exercicios/para-casa/5-atualizando_dados.py create mode 100644 exercicios/para-casa/6-remocao_dados.py create mode 100644 exercicios/para-casa/7-exportar_csv.py create mode 100644 exercicios/para-casa/exportados_livros.csv create mode 100644 exercicios/para-casa/livraria.db create mode 100644 exercicios/para-casa/livros.csv diff --git a/exercicios/para-casa/1-criacao.py b/exercicios/para-casa/1-criacao.py new file mode 100644 index 0000000..71ee2da --- /dev/null +++ b/exercicios/para-casa/1-criacao.py @@ -0,0 +1,22 @@ +import sqlite3 + +# 1- Criação do Banco de Dados +connection = sqlite3.connect('livraria.db') +cursor = connection.cursor() + +# 2- Criar Tabela, o if not exists vai garantir que não seja criada duas vezes a mesma tabela +cursor.execute(""" + CREATE TABLE IF NOT EXISTS livros( + id INTEGER PRIMARY KEY AUTOINCREMENT, + titulo TEXT NOT NULL, + autor TEXT NOT NULL, + ano INTEGER NOT NULL, + preco REAL + ) + """) + + + +connection.commit() # vai ler as alterações que foram feitas no banco de dados +cursor.close() # objeto que percorre tudo que está no banco de dados +connection.close() # boa prática para sempre garantir o fechamento da coração diff --git a/exercicios/para-casa/2-importar_csv.py b/exercicios/para-casa/2-importar_csv.py new file mode 100644 index 0000000..464ef30 --- /dev/null +++ b/exercicios/para-casa/2-importar_csv.py @@ -0,0 +1,25 @@ +import csv +# Crie um arquivo CSV chamado `livros.csv` com as colunas `titulo`, `autor`, `ano`, e `preco`. +# Adicione pelo menos 5 registros no arquivo `livros.csv`. + + +colunas = ['id', 'titulo', 'autor', 'ano', 'preco'] # Nome das colunas +livros = [ + (1, '1984', 'George Orwell', 1949, 28.90), + (2, 'Ninguém é de ninguém', 'Zibia Gasparetto', 2003, 43.00), + (3, 'Um gato entre os pombos', 'Agatha Christie', 1959, 24.70), + (4, 'Manual prático de como se perder a alma', 'Diedra Roiz', 2009, 0.00), + (5, '[10] coisas que eu odeio em você', 'Diedra Roiz', 2006, 24.99), + (6, 'Duas mulheres sozinhas e outros contos', 'Diedra Roiz', 2006, 2.99) + ] + +with open('./livros.csv', mode='w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile, delimiter= ',') + escritor.writerow(colunas) # Escrever o cabeçalho + escritor.writerows(livros) # Escrever os dados + + + + + + diff --git a/exercicios/para-casa/3-lendo_csv.py b/exercicios/para-casa/3-lendo_csv.py new file mode 100644 index 0000000..fd02fdb --- /dev/null +++ b/exercicios/para-casa/3-lendo_csv.py @@ -0,0 +1,24 @@ +# Escreva um script Python que leia os dados de `livros.csv` e insira-os na tabela `livros`. +""" +9. **Importação de CSV para SQLite**: +- Crie um script que leia um arquivo CSV chamado `clientes.csv` e insira os dados em uma tabela `clientes` no banco de dados SQLite `empresa.db`. A tabela deve ter as colunas `id`, `nome`, `email`. +""" + +import sqlite3 +import csv + +conn = sqlite3.connect('livraria.db') # cria a conexão com o banco de dados +cursor = conn.cursor() # cria o cursor para andar dentro do db + +# 1. verifica se existe livros.csv, 2. cria a ultima linha vazia e encoding formata como um arquivo csv (csvfile) +with open('./livros.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) # armazena tudo lido na variavel leitor + next(leitor) # Pular o cabeçalho para ler somente o conteúdo útil + for linha in leitor: # a partir disso, começa a percorrer cada linha + + # aqui ele vai inserir tudo que estiver nas linhas 1 e 2 (menos o cabeçalho) no banco de dados + cursor.execute("INSERT INTO livros (id, titulo, autor, ano, preco) VALUES (?, ?, ?, ?, ?)", (linha[0], linha[1], linha[2], linha[3], linha[4])) + +conn.commit() # comenta as alterações +cursor.close() # desliga o cursor +conn.close() # desliga a conexão \ No newline at end of file diff --git a/exercicios/para-casa/4-consultar_exibir.py b/exercicios/para-casa/4-consultar_exibir.py new file mode 100644 index 0000000..ad92859 --- /dev/null +++ b/exercicios/para-casa/4-consultar_exibir.py @@ -0,0 +1,13 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM livros") +livros = cursor.fetchall() + +for livro in livros: + print(livro) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/5-atualizando_dados.py b/exercicios/para-casa/5-atualizando_dados.py new file mode 100644 index 0000000..0945293 --- /dev/null +++ b/exercicios/para-casa/5-atualizando_dados.py @@ -0,0 +1,20 @@ +# - Escreva um script Python que atualize o preço de um livro específico (por exemplo, mude o preço do livro com `id` 1 para 29.99). +import sqlite3 + +conn = sqlite3.connect("livraria.db") +cursor = conn.cursor() + +cursor.execute(""" + UPDATE livros SET preco = ? + WHERE id = ? + """, (29.9, 5)) + + +conn.commit() + +print('Dados atualizados com sucesso') + + + + +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/6-remocao_dados.py b/exercicios/para-casa/6-remocao_dados.py new file mode 100644 index 0000000..8b08976 --- /dev/null +++ b/exercicios/para-casa/6-remocao_dados.py @@ -0,0 +1,16 @@ +# Escreva um script Python que remova um livro específico da tabela (por exemplo, remova o livro com `id` 3). +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute(""" + DELETE FROM livros + WHERE id = ? + """, (1,)) + +conn.commit() +print('Livro removido com sucesso!') + + +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/7-exportar_csv.py b/exercicios/para-casa/7-exportar_csv.py new file mode 100644 index 0000000..2a3df23 --- /dev/null +++ b/exercicios/para-casa/7-exportar_csv.py @@ -0,0 +1,17 @@ +# Escreva um script Python que exporte os dados da tabela `livros` para um novo arquivo CSV chamado `exportados_livros.csv`. +import sqlite3 +import csv + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM livros") +dados = cursor.fetchall() + +with open('exportados_livros.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'titulo', 'autor', 'ano', 'preco']) + escritor.writerows(dados) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/exportados_livros.csv b/exercicios/para-casa/exportados_livros.csv new file mode 100644 index 0000000..bac21d5 --- /dev/null +++ b/exercicios/para-casa/exportados_livros.csv @@ -0,0 +1,6 @@ +id,titulo,autor,ano,preco +2,Ninguém é de ninguém,Zibia Gasparetto,2003,43.0 +3,Um gato entre os pombos,Agatha Christie,1959,24.7 +4,Manual prático de como se perder a alma,Diedra Roiz,2009,0.0 +5,[10] coisas que eu odeio em você,Diedra Roiz,2006,29.9 +6,Duas mulheres sozinhas e outros contos,Diedra Roiz,2006,2.99 diff --git a/exercicios/para-casa/livraria.db b/exercicios/para-casa/livraria.db new file mode 100644 index 0000000000000000000000000000000000000000..7fc546000ab2a01f56c9302732d758e9e79f1267 GIT binary patch literal 12288 zcmeI&L2DC16ae7aO}ZC9|} zf(HeEh6hhlJxW2(`3Zuc;MI#BJ$UrRwAEI`iwBYS$Sgav^WJ2?Jx#K=HmcGJ*j75` z7UtP`<~Xbfz!=M7%V0YW2TulL$1&*tDYEQJ@_Gzsxw-c&KZ6Gf5+DH*AOR8}0TLhq z5+DH*AORBis{-q;H(n?>Ez7qeVRj?j=H4@6Hx)_yY&Wyg2ufi9Vd+LSfHQNa5*~{g z%$$C>;rQbd6V9Ut-)ly4Pb)J#x~D1($EHT%C}amJwJ<0L4Onkf)=G^Q+zeV!YKHYn z4Kvq*S~znu+e({83c}!a2(>!4X0`g`Do?G_zrC2Kla+o=?P<|gfVWybS!;SM|ACF< z4q5(1-sBf@Uvr1pp&$VgAOR8}0TLhq5+DH*AOR8}fqy}uH4cFHxQ>$S7>3t zsC}7qaYTShEpE-BtrDxusuUf~p`qly|F-CVdVKNK#^>b`kJYin-MQIKoF@(D;co*V zQcxWs6^I!2RJ;HDboTX++k;rjdTevjJ-5b_lt<9h{ijyq-nt{OR;<7X=n35s8aVJM z=06vCw~+DJQo;3`G3;=QD1t`L6#lc~;>-C#%(|F&*>!3% z*-85cG4u}x3noY1J90~MD09=}T3D<6HwAoFlNT6_vC;x@vhk^u1fCNZ@1W14cNPq-LfCNZ@1W4dN5*T$d6VC7*1@9Y@0@q^z literal 0 HcmV?d00001 diff --git a/exercicios/para-casa/livros.csv b/exercicios/para-casa/livros.csv new file mode 100644 index 0000000..27f323b --- /dev/null +++ b/exercicios/para-casa/livros.csv @@ -0,0 +1,7 @@ +id,titulo,autor,ano,preco +1,1984,George Orwell,1949,28.9 +2,Ninguém é de ninguém,Zibia Gasparetto,2003,43.0 +3,Um gato entre os pombos,Agatha Christie,1959,24.7 +4,Manual prático de como se perder a alma,Diedra Roiz,2009,0.0 +5,[10] coisas que eu odeio em você,Diedra Roiz,2006,24.99 +6,Duas mulheres sozinhas e outros contos,Diedra Roiz,2006,2.99