diff --git a/README.md b/README.md index e504ceb..bd45862 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,36 @@

- logo reprograma + logo reprograma

-# Tema da Aula +# Reprograma | Bootcamp de Análise de Dados +## 🚀 Exercícios para Casa +Turma Online on29 | Semana 08 | 2024 | Professora Daviny Letícia + +Este repositório contém os exercícios desenvolvidos durante a **Semana 08** do curso de Análise de Dados da turma Online On29 da Reprograma. Os desafios foram realizados para consolidar os conhecimentos adquiridos em aula. + +## 📌 Descrição +Nesta semana, exploramos a continuidade do trabalho com bancos de dados relacionais, avançando para o uso de operações mais complexas, como joins, subconsultas e views. O objetivo foi aprofundar o uso de SQL e Python para realizar consultas mais robustas e eficazes. + +## 🎯 Objetivos do projeto +- Implementar joins entre múltiplas tabelas para combinar dados de diferentes fontes. +- Utilizar subconsultas para realizar consultas complexas. +- Criar views para facilitar a reutilização de consultas SQL. +- Integrar essas operações com Python utilizando a biblioteca sqlite3. + +## 📝 Conteúdo do Repositório +O repositório está organizado da seguinte maneira: +- banco_de_dados.db: Arquivo do banco de dados gerado e manipulado pelo código Python. +- main.py: Código principal onde as operações do banco de dados são realizadas. +- requirements.txt: Dependências do projeto (caso existam). + +## 🖥️ Tecnologias utilizadas +- Python: Linguagem de programação utilizada para interagir com o banco de dados. +- SQLite: Sistema de banco de dados relacional leve e fácil de usar. +- SQL: Linguagem para manipulação dos dados no banco de dados. + + +--- -Turma Online 0n29 | Python | Semana 8 | 2024 | Professora Daviny Letícia ### Instruções Antes de começar, vamos organizar nosso setup. diff --git a/exercicios/para-casa/pacote/__init__.py b/exercicios/para-casa/pacote/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/exercicios/para-casa/pacote/__pycache__/__init__.cpython-312.pyc b/exercicios/para-casa/pacote/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..c844dd3 Binary files /dev/null and b/exercicios/para-casa/pacote/__pycache__/__init__.cpython-312.pyc differ diff --git a/exercicios/para-casa/pacote/__pycache__/script1_criar_banco.cpython-312.pyc b/exercicios/para-casa/pacote/__pycache__/script1_criar_banco.cpython-312.pyc new file mode 100644 index 0000000..d90d640 Binary files /dev/null and b/exercicios/para-casa/pacote/__pycache__/script1_criar_banco.cpython-312.pyc differ diff --git a/exercicios/para-casa/pacote/__pycache__/script2_criar_csv.cpython-312.pyc b/exercicios/para-casa/pacote/__pycache__/script2_criar_csv.cpython-312.pyc new file mode 100644 index 0000000..d09c2e4 Binary files /dev/null and b/exercicios/para-casa/pacote/__pycache__/script2_criar_csv.cpython-312.pyc differ diff --git a/exercicios/para-casa/pacote/__pycache__/script2_importar_csv.cpython-312.pyc b/exercicios/para-casa/pacote/__pycache__/script2_importar_csv.cpython-312.pyc new file mode 100644 index 0000000..9d136c4 Binary files /dev/null and b/exercicios/para-casa/pacote/__pycache__/script2_importar_csv.cpython-312.pyc differ diff --git a/exercicios/para-casa/pacote/__pycache__/script3_consultar_livros.cpython-312.pyc b/exercicios/para-casa/pacote/__pycache__/script3_consultar_livros.cpython-312.pyc new file mode 100644 index 0000000..2d078e0 Binary files /dev/null and b/exercicios/para-casa/pacote/__pycache__/script3_consultar_livros.cpython-312.pyc differ diff --git a/exercicios/para-casa/pacote/__pycache__/script4_atualizar_livro.cpython-312.pyc b/exercicios/para-casa/pacote/__pycache__/script4_atualizar_livro.cpython-312.pyc new file mode 100644 index 0000000..5f76519 Binary files /dev/null and b/exercicios/para-casa/pacote/__pycache__/script4_atualizar_livro.cpython-312.pyc differ diff --git a/exercicios/para-casa/pacote/__pycache__/script5_remover_livro.cpython-312.pyc b/exercicios/para-casa/pacote/__pycache__/script5_remover_livro.cpython-312.pyc new file mode 100644 index 0000000..8ed83c8 Binary files /dev/null and b/exercicios/para-casa/pacote/__pycache__/script5_remover_livro.cpython-312.pyc differ diff --git a/exercicios/para-casa/pacote/__pycache__/script6_exportar_csv.cpython-312.pyc b/exercicios/para-casa/pacote/__pycache__/script6_exportar_csv.cpython-312.pyc new file mode 100644 index 0000000..1dbc271 Binary files /dev/null and b/exercicios/para-casa/pacote/__pycache__/script6_exportar_csv.cpython-312.pyc differ diff --git a/exercicios/para-casa/pacote/script1_criar_banco.py b/exercicios/para-casa/pacote/script1_criar_banco.py new file mode 100644 index 0000000..d3e3f9b --- /dev/null +++ b/exercicios/para-casa/pacote/script1_criar_banco.py @@ -0,0 +1,16 @@ +import sqlite3 + +def criar_banco(): + conn = sqlite3.connect("livraria.db") + cursor = conn.cursor() + 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 NOT NULL + ) + """) + + conn.commit() diff --git a/exercicios/para-casa/pacote/script2_criar_csv.py b/exercicios/para-casa/pacote/script2_criar_csv.py new file mode 100644 index 0000000..78acaea --- /dev/null +++ b/exercicios/para-casa/pacote/script2_criar_csv.py @@ -0,0 +1,17 @@ +import csv +import sqlite3 + +def criar_csv(): + dados = [ + ['titulo', 'autor', 'ano', 'preco'], + ['Dom Casmurro', 'Machado de Assis', 1899, 32.43], + ['Orgulho e preconceito', 'Jane Austen', 1813, 35.20], + ['O Diário de Anne Frank', 'Anne Frank', 1947, 23.90], + ['Percy Jackson', 'Rick Riordan', 2005, 29.90], + ['Fahrenheit 451', 'Ray Bradbury', 1953, 42.50] + ] + + with open('livros.csv', 'w', newline='') as livros_csv: + escritor = csv.writer(livros_csv) + escritor.writerows(dados) + diff --git a/exercicios/para-casa/pacote/script2_importar_csv.py b/exercicios/para-casa/pacote/script2_importar_csv.py new file mode 100644 index 0000000..bb1dfa6 --- /dev/null +++ b/exercicios/para-casa/pacote/script2_importar_csv.py @@ -0,0 +1,17 @@ +import csv +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +def importar_csv(): + with open('livros.csv', 'r') as livros_csv: + leitor = csv.reader(livros_csv) + next(leitor) + for linha in livros_csv: + cursor.execute("INSERT INTO livros (titulo, autor, ano, preco) VALUES (?, ?, ?, ?)", linha.split(',')) + + conn.commit() + + + diff --git a/exercicios/para-casa/pacote/script3_consultar_livros.py b/exercicios/para-casa/pacote/script3_consultar_livros.py new file mode 100644 index 0000000..81f743b --- /dev/null +++ b/exercicios/para-casa/pacote/script3_consultar_livros.py @@ -0,0 +1,11 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +def consultar_livros(): + cursor.execute("SELECT * FROM livros") + resultados = cursor.fetchall() + for linha in resultados: + print(linha) + conn.commit() \ No newline at end of file diff --git a/exercicios/para-casa/pacote/script4_atualizar_livro.py b/exercicios/para-casa/pacote/script4_atualizar_livro.py new file mode 100644 index 0000000..13472ea --- /dev/null +++ b/exercicios/para-casa/pacote/script4_atualizar_livro.py @@ -0,0 +1,8 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +def atualizar_livro(): + cursor.execute("UPDATE livros SET preco = ? WHERE titulo = ?", (32.50, 'Dom Casmurro')) + conn.commit() \ No newline at end of file diff --git a/exercicios/para-casa/pacote/script5_remover_livro.py b/exercicios/para-casa/pacote/script5_remover_livro.py new file mode 100644 index 0000000..6bbcb2c --- /dev/null +++ b/exercicios/para-casa/pacote/script5_remover_livro.py @@ -0,0 +1,8 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +def remover_livro(): + cursor.execute("DELETE FROM livros WHERE id = ?", (2,)) + conn.commit() \ No newline at end of file diff --git a/exercicios/para-casa/pacote/script6_exportar_csv.py b/exercicios/para-casa/pacote/script6_exportar_csv.py new file mode 100644 index 0000000..ff0cc85 --- /dev/null +++ b/exercicios/para-casa/pacote/script6_exportar_csv.py @@ -0,0 +1,14 @@ +import csv +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +def exportar_csv(): + cursor.execute("SELECT titulo, autor, ano, preco FROM livros") + dados = cursor.fetchall() + with open('exportados.csv', 'w', newline='') as exportados_livros: + escritor = csv.writer(exportados_livros) + escritor.writerow(['titulo', 'autor', 'ano', 'preco']) + escritor.writerows(dados) + conn.commit() diff --git a/exercicios/para-casa/pacote/script_pacote.py b/exercicios/para-casa/pacote/script_pacote.py new file mode 100644 index 0000000..2802d78 --- /dev/null +++ b/exercicios/para-casa/pacote/script_pacote.py @@ -0,0 +1,14 @@ +import csv +import sqlite3 + +from pacote import script1_criar_banco, script2_criar_csv, script2_importar_csv, script3_consultar_livros, script4_atualizar_livro, script5_remover_livro, script6_exportar_csv + +funcao1 = script1_criar_banco.criar_banco() +funcao2 = script2_criar_csv.criar_csv() +funcao2_2 = script2_importar_csv.importar_csv() +funcao3 = script3_consultar_livros.consultar_livros() +funcao4 = script4_atualizar_livro.atualizar_livro() +funcao5 = script5_remover_livro.remover_livro() +funcao6 = script6_exportar_csv.exportar_csv() + +print("Programa concluído com sucesso") \ No newline at end of file