diff --git a/exercicios/exportados_livros.csv b/exercicios/exportados_livros.csv new file mode 100644 index 0000000..8dd2652 --- /dev/null +++ b/exercicios/exportados_livros.csv @@ -0,0 +1,6 @@ +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,65.9 +5,[10] coisas que eu odeio em você,Diedra Roiz,2006,24.99 diff --git a/exercicios/livraria.db b/exercicios/livraria.db new file mode 100644 index 0000000..be8f421 Binary files /dev/null and b/exercicios/livraria.db differ diff --git a/exercicios/livros.csv b/exercicios/livros.csv new file mode 100644 index 0000000..27f323b --- /dev/null +++ b/exercicios/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 diff --git a/exercicios/para-casa/livraria.db b/exercicios/para-casa/livraria.db new file mode 100644 index 0000000..10b2c0f Binary files /dev/null and b/exercicios/para-casa/livraria.db differ 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 diff --git a/exercicios/para-casa/script1.py b/exercicios/para-casa/script1.py new file mode 100644 index 0000000..da3685c --- /dev/null +++ b/exercicios/para-casa/script1.py @@ -0,0 +1,85 @@ +import sqlite3 +import csv + +# 1. **Criação do Banco de Dados e Tabela** +def criar_db(): + conn = sqlite3.connect('livraria.db') # conexão + cursor = conn.cursor() # criar o cursor para usar dentro do sqlite + + # comandos SQL para criação da 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 + ) + """) + conn.commit() + cursor.close() + conn.close() + +criar_db() + +#2. **Importação de Dados de um CSV** +def criar_csv(): + 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) + ] + + colunas = ['id', 'titulo', 'autor', 'ano', 'preco'] # Nome das colunas + + 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 + +# Chamar a função para criar o arquivo CSV +criar_csv() + +def importar_dadoscsv(): + 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 clientes.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 + id, titulo, autor, ano, preco = 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 (?, ?, ?, ?, ?)", (id, titulo, autor, ano, preco)) + + conn.commit() # comenta as alterações + cursor.close() # desliga o cursor + conn.close() # desliga a conexãoconn = sqlite3.connect('empresa.db') # cria a conexão com o banco de dados + cursor = conn.cursor() # cria o cursor para andar dentro do db +importar_dadoscsv() + + +# 3. **Consulta e Exibição de Dados** +def exibir_db(livros): + return livros + +# 4. **Atualização de Dados** +def atualizar_dados(): + return atualizar_dados + +# 5. **Remoção de Dados** +def remover_dados(): + return remover_dados + +# 6. **Exportação de Dados para CSV** +def exportar_dados(livros_exportados): + return livros_exportados + + + + diff --git a/exercicios/para-casa2/script1.py b/exercicios/para-casa2/script1.py new file mode 100644 index 0000000..16f90da --- /dev/null +++ b/exercicios/para-casa2/script1.py @@ -0,0 +1,27 @@ +"""1. **Criação do Banco de Dados e Tabela** + - Crie um banco de dados SQLite chamado `livraria.db`. + - Crie uma tabela chamada `livros` com as colunas: + - `id` (INTEGER, chave primária, autoincremento) + - `titulo` (TEXT) + - `autor` (TEXT) + - `ano` (INTEGER) + - `preco` (REAL)""" + +import sqlite3 + +conn = sqlite3.connect('livraria.db') # conexão +cursor = conn.cursor() # criar o cursor para usar dentro do sqlite + +# comandos SQL para criação da 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 +) +""") +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa2/script2.py b/exercicios/para-casa2/script2.py new file mode 100644 index 0000000..74018b0 --- /dev/null +++ b/exercicios/para-casa2/script2.py @@ -0,0 +1,23 @@ +"""2. **Importação de Dados de um 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`. + - Escreva um script Python que leia os dados de `livros.csv` e insira-os na tabela `livros`.""" + + +import csv + +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) + ] + +colunas = ['id', 'titulo', 'autor', 'ano', 'preco'] # Nome das colunas + +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 \ No newline at end of file diff --git a/exercicios/para-casa2/script3.py b/exercicios/para-casa2/script3.py new file mode 100644 index 0000000..7dbed38 --- /dev/null +++ b/exercicios/para-casa2/script3.py @@ -0,0 +1,21 @@ +""" - Escreva um script Python que leia os dados de `livros.csv` e insira-os na tabela `livros`.""" + +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-casa2/script4.py b/exercicios/para-casa2/script4.py new file mode 100644 index 0000000..d809cad --- /dev/null +++ b/exercicios/para-casa2/script4.py @@ -0,0 +1,17 @@ +"""3. **Consulta e Exibição de Dados** + - Escreva um script Python que selecione e exiba todos os registros da tabela `livros`.""" + +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() # criar o cursor para usar dentro do sqlite + +cursor.execute("SELECT * FROM livros") +livros = cursor.fetchall() + +for livro in livros: + print(livro) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa2/script5.py b/exercicios/para-casa2/script5.py new file mode 100644 index 0000000..720cfb0 --- /dev/null +++ b/exercicios/para-casa2/script5.py @@ -0,0 +1,21 @@ +""""4. **Atualização de Dados** + - 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') # conexão +cursor = conn.cursor() # criar o cursor para usar dentro do sqlite + +cursor.execute("UPDATE livros SET preco = 65.90 WHERE id = 4") # direciona o cursor para execução do comando SQL +cursor.execute("SELECT * FROM livros") + +livros_atualizados = cursor.fetchall() +print("Lista atualizada de livros:") + +for livro in livros_atualizados: + print(livro) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa2/script6.py b/exercicios/para-casa2/script6.py new file mode 100644 index 0000000..6ea1b33 --- /dev/null +++ b/exercicios/para-casa2/script6.py @@ -0,0 +1,24 @@ +"""5. **Remoção de Dados** + - 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') # conexão +cursor = conn.cursor() # criar o cursor para usar dentro do sqlite + +cursor.execute("DELETE FROM livros WHERE id = 6") # direciona o cursor para execução do comando SQL + + +cursor.execute("SELECT * FROM livros") +livros_atualizados = cursor.fetchall() + +# Imprimir a lista atualizada de livros +print("Lista atualizada de livros:") +for livro in livros_atualizados: + print(livro) + + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa2/script7.py b/exercicios/para-casa2/script7.py new file mode 100644 index 0000000..f5e5792 --- /dev/null +++ b/exercicios/para-casa2/script7.py @@ -0,0 +1,24 @@ +"""6. **Exportação de Dados para CSV** + - 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() + +colunas = ['id', 'titulo', 'autor', 'ano', 'preco'] # Nome das colunas + +with open('./exportados_livros.csv', mode='w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile, delimiter= ',') + escritor.writerow(colunas) # Escrever o cabeçalho + escritor.writerows(dados) # Escrever os dados + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/clientes.csv b/exercicios/para-sala/CSV/clientes.csv similarity index 100% rename from exercicios/para-sala/clientes.csv rename to exercicios/para-sala/CSV/clientes.csv diff --git a/exercicios/para-sala/funcionarios.csv b/exercicios/para-sala/CSV/funcionarios.csv similarity index 100% rename from exercicios/para-sala/funcionarios.csv rename to exercicios/para-sala/CSV/funcionarios.csv diff --git a/exercicios/para-sala/produtos.csv b/exercicios/para-sala/CSV/produtos.csv similarity index 100% rename from exercicios/para-sala/produtos.csv rename to exercicios/para-sala/CSV/produtos.csv diff --git a/exercicios/para-sala/CSV/script1.py b/exercicios/para-sala/CSV/script1.py new file mode 100644 index 0000000..3f93c4c --- /dev/null +++ b/exercicios/para-sala/CSV/script1.py @@ -0,0 +1,10 @@ +"""7. **Leitura de CSV**: + - Crie um script que leia um arquivo CSV chamado `produtos.csv` contendo as colunas `id`, `nome` e `preco`, e exiba seu conteúdo no terminal. +""" + +import csv + +with open('produtos.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + for linha in leitor: + print(linha) \ No newline at end of file diff --git a/exercicios/para-sala/CSV/script2.py b/exercicios/para-sala/CSV/script2.py new file mode 100644 index 0000000..77df565 --- /dev/null +++ b/exercicios/para-sala/CSV/script2.py @@ -0,0 +1,30 @@ +"""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('empresa.db') # cria a conexão com o banco de dados +cursor = conn.cursor() # cria o cursor para andar dentro do db + +# criação da tabela +cursor.execute(""" +CREATE TABLE IF NOT EXISTS clientes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + email TEXT NOT NULL +) +""") +# 1. verifica se existe clientes.csv, 2. cria a ultima linha vazia e encoding formata como um arquivo csv (csvfile) +with open('clientes.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 clientes (nome, email) VALUES (?, ?)", (linha[1], linha[2])) + +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-sala/exemplo/exemplo.db b/exercicios/para-sala/exemplo/exemplo.db new file mode 100644 index 0000000..507fc17 Binary files /dev/null and b/exercicios/para-sala/exemplo/exemplo.db differ diff --git a/exercicios/para-sala/exemplo/script.py b/exercicios/para-sala/exemplo/script.py new file mode 100644 index 0000000..5b6245d --- /dev/null +++ b/exercicios/para-sala/exemplo/script.py @@ -0,0 +1,26 @@ +import sqlite3 +conn = sqlite3.connect("exemplo.db") +cursor = conn.cursor() +cursor.execute(""" + CREATE TABLE IF NOT EXISTS usuarios( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + idade INTEGER NOT NULL + ) + """) + + +"""#inserir dois usuário na tabela exemplo db +cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('Pam', 29) ") +cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('kiko', 89) ")""" + +#pegar todos os dados? da tabela exemplo db +cursor.execute("Select * FROM usuarios") +registros= cursor.fetchall() + +for registro in registros: + print(registro) + +# essas duas linhas seguintes são importantes de estarem presentes no final do codigo pq: +conn.commit() # Commit informa as alterações feitas na tabela +conn.close() # para fechar a conexão iniciada (boa prática) \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/escola.db b/exercicios/para-sala/exercicio/escola.db new file mode 100644 index 0000000..70677a0 Binary files /dev/null and b/exercicios/para-sala/exercicio/escola.db differ diff --git a/exercicios/para-sala/exercicio/script.py b/exercicios/para-sala/exercicio/script.py new file mode 100644 index 0000000..484598f --- /dev/null +++ b/exercicios/para-sala/exercicio/script.py @@ -0,0 +1,16 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') # conexão +cursor = conn.cursor() # criar o cursor para usar dentro do sqlite + +# comandos SQL para criação da tabela +cursor.execute(""" +CREATE TABLE IF NOT EXISTS estudantes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + idade INTEGER NOT NULL +) +""") +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script1.py b/exercicios/para-sala/exercicio/script1.py new file mode 100644 index 0000000..3813c4a --- /dev/null +++ b/exercicios/para-sala/exercicio/script1.py @@ -0,0 +1,18 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') # conexão +cursor = conn.cursor() # criar o cursor para usar dentro do sqlite + +estudantes = [ + ('Pam', 29), + ('Edu', 22), + ('Tai', 29), + ('Betania', 29), + ('Atiladê', 29) +] + +cursor.executemany("INSERT INTO estudantes (nome, idade) VALUES (?, ?)", estudantes) + +conn.commit() +cursor.close() # fechar o cursos trabalhando dentro do sqlite +conn.close() # encerrar conexão com o sqlite \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script2.py b/exercicios/para-sala/exercicio/script2.py new file mode 100644 index 0000000..cac9b5f --- /dev/null +++ b/exercicios/para-sala/exercicio/script2.py @@ -0,0 +1,18 @@ +# 3. **Consulta de Dados** + +import sqlite3 + +conn = sqlite3.connect('escola.db') # conectar com o banco de dados +cursor = conn.cursor() # criar o cursor para mexer dentro do banco de dados + +nome = input("digite um nome: ") +cursor.execute("SELECT nome FROM estudantes WHERE nome = ?", (nome,)) + +#cursor.execute("SELECT * FROM estudantes") # forçar o cursor a executar o comando "selecionar tudo" +registros = cursor.fetchall() # depois de pegar todas as informações, o comando fetchall guarda todas as informaçoes dentro de registros + +for registro in registros: # passa linha a linha + print(registro) # e printa tudo que ta dentro da variavel percorrido pelo comando for + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script3.py b/exercicios/para-sala/exercicio/script3.py new file mode 100644 index 0000000..3550491 --- /dev/null +++ b/exercicios/para-sala/exercicio/script3.py @@ -0,0 +1,13 @@ +"""4. **Atualização de Dados**: +- Escreva um script que atualize a idade de um estudante específico (por exemplo, mude a idade de "Bob" para 23). +""" +import sqlite3 + +conn = sqlite3.connect('escola.db') # conecta com o banco de dados +cursor = conn.cursor() # cria o cursor que andará dentro do banco de dados + +cursor.execute("UPDATE estudantes SET idade = ? WHERE nome = ?", (23, 'Edu')) # direciona o cursor para execução do comando SQL + +conn.commit() # comenta a alteração +cursor.close() # encerra a atividade do cursor +conn.close() # desconecta do banco de dados \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script4.py b/exercicios/para-sala/exercicio/script4.py new file mode 100644 index 0000000..1450fc5 --- /dev/null +++ b/exercicios/para-sala/exercicio/script4.py @@ -0,0 +1,19 @@ +"""5. **Remoção de Dados**: + - Crie um script que remova um estudante específico (por exemplo, remova "Charlie").""" + + +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +estudantes = [ + ('Luis', 55) +] + +cursor.executemany("INSERT INTO estudantes (nome, idade) VALUES (?, ?)", estudantes) +cursor.execute("DELETE FROM estudantes WHERE nome = ?", ('Luis',)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script5.py b/exercicios/para-sala/exercicio/script5.py new file mode 100644 index 0000000..7aee41a --- /dev/null +++ b/exercicios/para-sala/exercicio/script5.py @@ -0,0 +1,16 @@ +"""6. **Consulta com Condições**: + - Escreva um script que selecione e exiba todos os estudantes cuja idade seja maior que 21. +""" +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM estudantes WHERE idade > 25") +registros = cursor.fetchall() + +for registro in registros: + print(registro) + +cursor.close() +conn.close \ No newline at end of file