Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolução do Desafio #9

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 131 additions & 0 deletions exercicios/para-casa/DesafioDaSemana.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
import sqlite3
import csv



# **Criação do Banco de Dados e Tabela**
def criar_banco_tabela():

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 TEXT NOT NULL,
preco REAL
)"""
)

conn.commit()
conn.close()

# **Importação de Dados de um CSV**
def ler_csv():

conn = sqlite3.connect('Livraria.db')
cursor = conn.cursor()
with open('livros.csv', newline='', encoding='UTF-8') as csv_file:
leitor = csv.reader(csv_file)
# Pula a primeira linha
next(leitor)
for linha in leitor:
cursor.execute('''
INSERT INTO livros (titulo, autor, ano, preco)
VALUES (?, ?, ?, ?)
''', (linha[0], linha[1], linha[2], linha[3]))

conn.commit()
conn.close()


# **Consulta e Exibição de Dados**

def Consultar_Visualizar():
conn = sqlite3.connect('Livraria.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM livros')
livros = cursor.fetchall()
for livro in livros:
print(livro)

conn.close()

# **Atualização de Dados**

def Atualizar_Preco():

conn = sqlite3.connect('Livraria.db')
cursor = conn.cursor()
id_livro = int(input("Digite o id do livro a ter o preço modificado: "))
novo_preco = float(input("Digite o novo valor para o livro: "))

cursor.execute("UPDATE livros SET preco = ? WHERE id = ?", (novo_preco, id_livro))

cursor.execute("SELECT * FROM livros")
# 'cursor.fetchall()' - Percorre todos os registros resultantes da última instrução SQL
livros = cursor.fetchall()
for livro in livros:
print(livros)

conn.commit()
conn.close()

# **Remoção de Dados**

def Remover_livros():
conn = sqlite3.connect('Livraria.db')
cursor = conn.cursor()
id_livro = int(input("Digite o id do livro a ser removido: "))

cursor.execute("DELETE FROM livros WHERE id = ?", (id_livro,))

cursor.execute("SELECT * FROM livros")
# 'cursor.fetchall()' - Percorre todos os registros resultantes da última instrução SQL
livros = cursor.fetchall()
for livro in livros:
print(livro)

conn.commit()
conn.close()

# **Exportação de Dados para CSV**

def exportar_para_csv():
conn = sqlite3.connect('Livraria.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM livros')
livros = cursor.fetchall()

conn.close()

with open('exportados_livros.csv', 'w', newline='', encoding='UTF-8') as csv_file:
writer = csv.writer(csv_file)
writer.writerow(['id', 'titulo', 'autor', 'ano', 'preco'])
for livro in livros:
writer.writerows([str(valor) for valor in livro[1:]])

print("Dados exportados.")


# Executando todas as etapas

def main():
criar_banco_tabela()
ler_csv()

print("\nOs livros disponíveis são:")
Consultar_Visualizar()

Atualizar_Preco()
Remover_livros()

exportar_para_csv()
print('\n***************************')
print("\nDados exportados para arquivo csv.")

if __name__ == "__main__":
main()


Binary file added exercicios/para-casa/Livraria.db
Binary file not shown.
109 changes: 109 additions & 0 deletions exercicios/para-casa/exportados_livros.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
id,titulo,autor,ano,preco
A,s, ,B,r,u,m,a,s, ,d,e, ,A,v,a,l,o,n
,M,a,r,i,o,n, ,Z,., ,B,r,a,d,l,e,y
,2,0,0,1
1,3,1,.,9,2
M,u,l,h,e,r,e,s, ,q,u,e, ,C,o,r,r,e,m, ,c,o,m, ,L,o,b,o,s
,C,l,a,r,i,s,s,a, ,P,í,n,k,o,l,a, ,E,s,t,é,s
,2,0,1,8
6,7,.,5
A, ,B,r,u,x,a, ,d,e, ,P,o,r,t,o, ,B,e,l,o
,P,a,u,l,o, ,C,o,e,l,h,o
,2,0,0,6
1,3,.,0
A,m,o,r, ,d,e, ,R,e,d,e,n,ç,ã,o
,F,r,a,n,c,i,n,e, ,R,i,v,e,r,s
,1,9,9,1
5,6,.,6,2
A, ,c,a,s,a, ,d,o,s, ,B,u,d,a,s, ,D,i,t,o,s,o,s
,J,o,ã,o, ,U,b,a,l,d,o, ,R,i,b,e,i,r,o
,1,9,9,9
2,0,.,0
M,e,n,t,e,s, ,P,e,r,i,g,o,s,a,s
,A,n,a, ,B,e,a,t,r,i,z, ,B,a,r,b,o,s,a, ,S,i,l,v,a
,2,0,0,8
5,0,.,8,8
A,s, ,B,r,u,m,a,s, ,d,e, ,A,v,a,l,o,n
,M,a,r,i,o,n, ,Z,., ,B,r,a,d,l,e,y
,2,0,0,1
1,3,1,.,9,2
M,u,l,h,e,r,e,s, ,q,u,e, ,C,o,r,r,e,m, ,c,o,m, ,L,o,b,o,s
,C,l,a,r,i,s,s,a, ,P,í,n,k,o,l,a, ,E,s,t,é,s
,2,0,1,8
6,7,.,5
A, ,B,r,u,x,a, ,d,e, ,P,o,r,t,o, ,B,e,l,o
,P,a,u,l,o, ,C,o,e,l,h,o
,2,0,0,6
1,3,.,0
A,m,o,r, ,d,e, ,R,e,d,e,n,ç,ã,o
,F,r,a,n,c,i,n,e, ,R,i,v,e,r,s
,1,9,9,1
5,6,.,6,2
A, ,c,a,s,a, ,d,o,s, ,B,u,d,a,s, ,D,i,t,o,s,o,s
,J,o,ã,o, ,U,b,a,l,d,o, ,R,i,b,e,i,r,o
,1,9,9,9
3,9,.,3,6
M,e,n,t,e,s, ,P,e,r,i,g,o,s,a,s
,A,n,a, ,B,e,a,t,r,i,z, ,B,a,r,b,o,s,a, ,S,i,l,v,a
,2,0,0,8
2,0,.,0
A,s, ,B,r,u,m,a,s, ,d,e, ,A,v,a,l,o,n
,M,a,r,i,o,n, ,Z,., ,B,r,a,d,l,e,y
,2,0,0,1
1,3,1,.,9,2
M,u,l,h,e,r,e,s, ,q,u,e, ,C,o,r,r,e,m, ,c,o,m, ,L,o,b,o,s
,C,l,a,r,i,s,s,a, ,P,í,n,k,o,l,a, ,E,s,t,é,s
,2,0,1,8
6,7,.,5
A, ,B,r,u,x,a, ,d,e, ,P,o,r,t,o, ,B,e,l,o
,P,a,u,l,o, ,C,o,e,l,h,o
,2,0,0,6
1,3,.,0
A,m,o,r, ,d,e, ,R,e,d,e,n,ç,ã,o
,F,r,a,n,c,i,n,e, ,R,i,v,e,r,s
,1,9,9,1
5,6,.,6,2
A, ,c,a,s,a, ,d,o,s, ,B,u,d,a,s, ,D,i,t,o,s,o,s
,J,o,ã,o, ,U,b,a,l,d,o, ,R,i,b,e,i,r,o
,1,9,9,9
3,9,.,3,6
A,s, ,B,r,u,m,a,s, ,d,e, ,A,v,a,l,o,n
,M,a,r,i,o,n, ,Z,., ,B,r,a,d,l,e,y
,2,0,0,1
1,3,1,.,9,2
M,u,l,h,e,r,e,s, ,q,u,e, ,C,o,r,r,e,m, ,c,o,m, ,L,o,b,o,s
,C,l,a,r,i,s,s,a, ,P,í,n,k,o,l,a, ,E,s,t,é,s
,2,0,1,8
6,7,.,5
A, ,B,r,u,x,a, ,d,e, ,P,o,r,t,o, ,B,e,l,o
,P,a,u,l,o, ,C,o,e,l,h,o
,2,0,0,6
1,3,.,0
A,m,o,r, ,d,e, ,R,e,d,e,n,ç,ã,o
,F,r,a,n,c,i,n,e, ,R,i,v,e,r,s
,1,9,9,1
5,6,.,6,2
A, ,c,a,s,a, ,d,o,s, ,B,u,d,a,s, ,D,i,t,o,s,o,s
,J,o,ã,o, ,U,b,a,l,d,o, ,R,i,b,e,i,r,o
,1,9,9,9
3,9,.,3,6
A,s, ,B,r,u,m,a,s, ,d,e, ,A,v,a,l,o,n
,M,a,r,i,o,n, ,Z,., ,B,r,a,d,l,e,y
,2,0,0,1
1,3,1,.,9,2
M,u,l,h,e,r,e,s, ,q,u,e, ,C,o,r,r,e,m, ,c,o,m, ,L,o,b,o,s
,C,l,a,r,i,s,s,a, ,P,í,n,k,o,l,a, ,E,s,t,é,s
,2,0,1,8
6,7,.,5
A, ,B,r,u,x,a, ,d,e, ,P,o,r,t,o, ,B,e,l,o
,P,a,u,l,o, ,C,o,e,l,h,o
,2,0,0,6
1,3,.,0
A,m,o,r, ,d,e, ,R,e,d,e,n,ç,ã,o
,F,r,a,n,c,i,n,e, ,R,i,v,e,r,s
,1,9,9,1
5,6,.,6,2
A, ,c,a,s,a, ,d,o,s, ,B,u,d,a,s, ,D,i,t,o,s,o,s
,J,o,ã,o, ,U,b,a,l,d,o, ,R,i,b,e,i,r,o
,1,9,9,9
3,9,.,3,6
7 changes: 7 additions & 0 deletions exercicios/para-casa/livros.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
titulo, autor, ano, preco
As Brumas de Avalon, Marion Z. Bradley, 2001, 131.92
Mulheres que Correm com Lobos, Clarissa Pínkola Estés, 2018, 67.50
A Bruxa de Porto Belo, Paulo Coelho, 2006, 13.00
Amor de Redenção, Francine Rivers, 1991, 56.62
A casa dos Budas Ditosos, João Ubaldo Ribeiro, 1999, 39.36
Mentes Perigosas, Ana Beatriz Barbosa Silva, 2008, 50.88
6 changes: 6 additions & 0 deletions exercicios/para-sala/csv/1.Leitura.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import csv

with open('produtos.csv', newline='', encoding='UTF-8') as csvfile:
leitor = csv.reader(csvfile)
for linha in leitor:
print(linha)
12 changes: 12 additions & 0 deletions exercicios/para-sala/csv/2.Escrita.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import csv

novos_dados = [
[6, 'Carlota', 'Financeiro'],
[7, 'Joaquina', 'TI'],
[8, 'Bianca', 'RH']
]

with open('funcionarios.csv', 'w', newline='', encoding='utf-8') as csvfile:
escritor = csv.writer(csvfile)
escritor.writerow(['id', 'nome', 'departamento'])
escritor.writerows(novos_dados)
4 changes: 4 additions & 0 deletions exercicios/para-sala/csv/funcionarios.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
id,nome,departamento
6,Carlota,Financeiro
7,Joaquina,TI
8,Bianca,RH
Binary file added exercicios/para-sala/exemplo/exemplo.db
Binary file not shown.
24 changes: 24 additions & 0 deletions exercicios/para-sala/exemplo/script01.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
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
)
""")

# cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('João', 25)")
# cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('Maria', 20)")
# cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('Chico', 40)")
# cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('Buarque', 21)")

cursor.execute("SELECT * FROM usuarios")
registros = cursor.fetchall()
for registro in registros:
print(registro)

conn.commit()
conn.close()
28 changes: 28 additions & 0 deletions exercicios/para-sala/exercicio/1.CriandoBanco.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Importando o módulo 'sqlite3', para trabalhar com BD SQLite em Python.
import sqlite3

# Criando uma variável para conexão do python ao BD SQLite
conn = sqlite3.connect('escola.db')

# Criando o cursor (variável)
# O método 'cursor' (conn.cursor) permite executar comandos SQL e recuperar resultados de consultas
cursor = conn.cursor()

# Execução dos comandos SQL
# 'cursor.execute() - Executa a instrução SQL;
cursor.execute("""
CREATE TABLE IF NOT EXISTS estudantes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
idade INTEGER NOT NULL
)
""")

# Salvando as alterações realizadas
conn.commit()

# Fecha o cursor
cursor.close()

# Fechando a conexão com o Banco de dados
conn.close()
22 changes: 22 additions & 0 deletions exercicios/para-sala/exercicio/2. InserindoDados.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import sqlite3

conn = sqlite3.connect("escola.db")
cursor = conn.cursor()

dados = [
('Maria', 54),
('Betânia', 25),
('Julia', 23),
('Carlos', 18),
('João', 32),
('Pedro', 15)
]

# Executa instrução SQL
# inseri, atualiza ou deleta múltiplos registros de uma só vez,
# É utilizado para não fazer isso um por um com várias chamados ao 'cursor.execute()'.
cursor.executemany("INSERT INTO estudantes (nome, idade) VALUES (?, ?)", dados)

conn.commit()
cursor.close()
conn.close()
22 changes: 22 additions & 0 deletions exercicios/para-sala/exercicio/3.ConsultandoDados.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Crie um script que selecione e exiba todos os registros da tabela `estudantes`.

import sqlite3

conn = sqlite3.connect("escola.db")
cursor = conn.cursor()

nome = input("Digite o nome que deseja consultar: ")

cursor.execute("SELECT nome FROM estudantes WHERE nome = ?", (nome, ))
registros = cursor.fetchall()
for registro in registros:
print(registro)

cursor.close()
conn.close()





# (1, 'Maria', 18,) == 'Maria'
Loading