From b72d19fd4a4c76506ff42df35ec07e402a6ef508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Bet=C3=A2nia?= Date: Sat, 18 May 2024 12:31:13 -0500 Subject: [PATCH 1/5] Initial commit --- exercicios/para-sala/exemplo/exemplo.db | Bin 0 -> 12288 bytes exercicios/para-sala/exemplo/script01.py | 24 ++++++++++++++++++ .../para-sala/exercicio/1.CriandoBanco.py | 16 ++++++++++++ .../para-sala/exercicio/2. InserindoDados.py | 19 ++++++++++++++ .../para-sala/exercicio/3.ConsultandoDados.py | 22 ++++++++++++++++ .../para-sala/exercicio/4.AtualizandoDados.py | 16 ++++++++++++ .../para-sala/exercicio/5.RemovendoDados.py | 15 +++++++++++ exercicios/para-sala/exercicio/escola.db | Bin 0 -> 12288 bytes 8 files changed, 112 insertions(+) create mode 100644 exercicios/para-sala/exemplo/exemplo.db create mode 100644 exercicios/para-sala/exemplo/script01.py create mode 100644 exercicios/para-sala/exercicio/1.CriandoBanco.py create mode 100644 exercicios/para-sala/exercicio/2. InserindoDados.py create mode 100644 exercicios/para-sala/exercicio/3.ConsultandoDados.py create mode 100644 exercicios/para-sala/exercicio/4.AtualizandoDados.py create mode 100644 exercicios/para-sala/exercicio/5.RemovendoDados.py create mode 100644 exercicios/para-sala/exercicio/escola.db diff --git a/exercicios/para-sala/exemplo/exemplo.db b/exercicios/para-sala/exemplo/exemplo.db new file mode 100644 index 0000000000000000000000000000000000000000..eb9a6f55ca3d7587ca6e04f3f72b52d26b8ef7ea GIT binary patch literal 12288 zcmeI&O-jQ+6bJB`B&dYSxKK)w!hoBW7B^nNv<#)1rZuKu-AHUl473St+5_lSJcVob zp1=dR77yS{F%`RUsmTA4$-K#YEPlH;y&R1Oy-e0SG_<0uX=z1Rwwb2teQ$1$xFtu~y@Qd3Zh6 z>2yp*@l~p)3mp&Fhi21PPM~DqG+ZUu)>h(hqU*G?dUwD#i{&!EFD=hpq>FGCC28Ip z-%iQD%8D&NBO1xJ7pRuYE90%~bG)Ab_lP<-faNSy3Tm)y+5~P~`F{WTAIn4=yG@(iQ0QxBU3SHcU zuD*Z|;O^i9crCV}T^tMY{Uw*&<#+cBd@_aP`pWiG$seM4BvO7t4hf~?jB`SWp;}J0 zWl+`8mjiX4kN*mT9EYz3HA`a}VXitLAOHafKmY;|fB*y_009U<00LVP=xau)UZ=xU z+yycj2kLeBHj(3r4DUCGxt3#@uEkxmXBJLZ zDwC|ItyRjd^J<>|hVSuq*R{?qhxeU!$8?7L(i(De;P%>GwY+0>-NtHm7>y)%ts9qj zd#Vj=JInc=@Z_r4GQU__E3gluvngSp?47-_>3rMDW57)z009U<00Izz00bZa0SG_< z0uWde$QwE-(Z2NJh~; Date: Sat, 18 May 2024 12:58:23 -0500 Subject: [PATCH 2/5] =?UTF-8?q?Atualiza=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../para-sala/exercicio/4.AtualizandoDados.py | 6 +++++- exercicios/para-sala/exercicio/escola.db | Bin 12288 -> 12288 bytes 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/exercicios/para-sala/exercicio/4.AtualizandoDados.py b/exercicios/para-sala/exercicio/4.AtualizandoDados.py index 828fbbb..2795b27 100644 --- a/exercicios/para-sala/exercicio/4.AtualizandoDados.py +++ b/exercicios/para-sala/exercicio/4.AtualizandoDados.py @@ -3,7 +3,11 @@ conn = sqlite3.connect('escola.db') cursor = conn.cursor() -cursor.execute("UPDATE estudantes SET idade = ? WHERE id = ?", (18, 2)) +id = input("Digite o ID do estudante que deseja atualizar: ") +novo_nome = input("Digite o novo nome: ") +nova_idade = int(input("Digite a nova idade: ")) + +cursor.execute("UPDATE estudantes SET nome = ?, idade = ? WHERE id = ?", (novo_nome, nova_idade, id)) cursor.execute("SELECT * FROM estudantes") registros = cursor.fetchall() diff --git a/exercicios/para-sala/exercicio/escola.db b/exercicios/para-sala/exercicio/escola.db index 986e45898a051d539621536e7b9eabae9cf56270..21364dfda2a4f2552cb7628e813e063f01dd7dc3 100644 GIT binary patch delta 49 zcmZojXh@hK&B#7c#+i|QW5P;)#xI+>1kUrbFfcGkPrfTJ&cnsT!XVD*n^=^YD7i>M F003FE45I)5 delta 49 zcmZojXh@hK&B!)U#+i|AW5P;)#;2RP1kUrb@PA?8nS57XoQHvdfk&LtH?b%)(QJ`| F003>v4W9r2 From 9edbcc58933a93f798947234ab2130d3c099ad22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Bet=C3=A2nia?= Date: Sat, 18 May 2024 14:45:38 -0500 Subject: [PATCH 3/5] =?UTF-8?q?Finaliza=C3=A7=C3=A3oAula?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercicios/para-sala/csv/1.Leitura.py | 6 ++++++ exercicios/para-sala/csv/2.Escrita.py | 12 ++++++++++++ exercicios/para-sala/{ => csv}/clientes.csv | 0 exercicios/para-sala/csv/funcionarios.csv | 4 ++++ exercicios/para-sala/{ => csv}/produtos.csv | 0 exercicios/para-sala/funcionarios.csv | 6 ------ 6 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 exercicios/para-sala/csv/1.Leitura.py create mode 100644 exercicios/para-sala/csv/2.Escrita.py rename exercicios/para-sala/{ => csv}/clientes.csv (100%) create mode 100644 exercicios/para-sala/csv/funcionarios.csv rename exercicios/para-sala/{ => csv}/produtos.csv (100%) delete mode 100644 exercicios/para-sala/funcionarios.csv diff --git a/exercicios/para-sala/csv/1.Leitura.py b/exercicios/para-sala/csv/1.Leitura.py new file mode 100644 index 0000000..2a84800 --- /dev/null +++ b/exercicios/para-sala/csv/1.Leitura.py @@ -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) \ No newline at end of file diff --git a/exercicios/para-sala/csv/2.Escrita.py b/exercicios/para-sala/csv/2.Escrita.py new file mode 100644 index 0000000..e3bae1c --- /dev/null +++ b/exercicios/para-sala/csv/2.Escrita.py @@ -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) \ 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/csv/funcionarios.csv b/exercicios/para-sala/csv/funcionarios.csv new file mode 100644 index 0000000..079fa9e --- /dev/null +++ b/exercicios/para-sala/csv/funcionarios.csv @@ -0,0 +1,4 @@ +id,nome,departamento +6,Carlota,Financeiro +7,Joaquina,TI +8,Bianca,RH 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/funcionarios.csv b/exercicios/para-sala/funcionarios.csv deleted file mode 100644 index ecfc643..0000000 --- a/exercicios/para-sala/funcionarios.csv +++ /dev/null @@ -1,6 +0,0 @@ -id,nome,departamento -1,Ana,Financeiro -2,Carlos,TI -3,Beatriz,RH -4,Daniel,Marketing -5,Elisa,Vendas From 366fb9b81c1a50d020bd70a993fd750331dad91a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Bet=C3=A2nia?= Date: Mon, 20 May 2024 15:34:51 -0500 Subject: [PATCH 4/5] =?UTF-8?q?Nova=20Organiza=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercicios/para-sala/exercicio/1.CriandoBanco.py | 14 +++++++++++++- .../para-sala/exercicio/2. InserindoDados.py | 3 +++ .../para-sala/exercicio/4.AtualizandoDados.py | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/exercicios/para-sala/exercicio/1.CriandoBanco.py b/exercicios/para-sala/exercicio/1.CriandoBanco.py index 13c849e..b32a610 100644 --- a/exercicios/para-sala/exercicio/1.CriandoBanco.py +++ b/exercicios/para-sala/exercicio/1.CriandoBanco.py @@ -1,9 +1,15 @@ +# Importando o módulo 'sqlite3', para trabalhar com BD SQLite em Python. import sqlite3 -# Conexão + +# 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, @@ -12,5 +18,11 @@ ) """) +# Salvando as alterações realizadas conn.commit() + +# Fecha o cursor +cursor.close() + +# Fechando a conexão com o Banco de dados conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/2. InserindoDados.py b/exercicios/para-sala/exercicio/2. InserindoDados.py index 8c3e43f..2b51e3f 100644 --- a/exercicios/para-sala/exercicio/2. InserindoDados.py +++ b/exercicios/para-sala/exercicio/2. InserindoDados.py @@ -12,6 +12,9 @@ ('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() diff --git a/exercicios/para-sala/exercicio/4.AtualizandoDados.py b/exercicios/para-sala/exercicio/4.AtualizandoDados.py index 2795b27..3523257 100644 --- a/exercicios/para-sala/exercicio/4.AtualizandoDados.py +++ b/exercicios/para-sala/exercicio/4.AtualizandoDados.py @@ -10,6 +10,7 @@ cursor.execute("UPDATE estudantes SET nome = ?, idade = ? WHERE id = ?", (novo_nome, nova_idade, id)) cursor.execute("SELECT * FROM estudantes") +# 'cursor.fetchall()' - Percorre todos os registros resultantes da última instrução SQL registros = cursor.fetchall() for registro in registros: print(registro) From 59378aeef66d4c054dbf3ac44be5ad105483df79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Bet=C3=A2nia?= Date: Wed, 22 May 2024 18:07:06 -0500 Subject: [PATCH 5/5] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20final?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercicios/para-casa/DesafioDaSemana.py | 131 +++++++++++++++++++++ exercicios/para-casa/Livraria.db | Bin 0 -> 12288 bytes exercicios/para-casa/exportados_livros.csv | 109 +++++++++++++++++ exercicios/para-casa/livros.csv | 7 ++ 4 files changed, 247 insertions(+) create mode 100644 exercicios/para-casa/DesafioDaSemana.py create mode 100644 exercicios/para-casa/Livraria.db create mode 100644 exercicios/para-casa/exportados_livros.csv create mode 100644 exercicios/para-casa/livros.csv diff --git a/exercicios/para-casa/DesafioDaSemana.py b/exercicios/para-casa/DesafioDaSemana.py new file mode 100644 index 0000000..2924e26 --- /dev/null +++ b/exercicios/para-casa/DesafioDaSemana.py @@ -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() + + diff --git a/exercicios/para-casa/Livraria.db b/exercicios/para-casa/Livraria.db new file mode 100644 index 0000000000000000000000000000000000000000..3eb219a7f78c8bb0b89a3d8e60dc2edc7ce6bda7 GIT binary patch literal 12288 zcmeI&Pfrs;6aetqg020x#ZYYU4|z8+2%#7d4#eH!N-8bXQW7yHI<%u~-0sNimLSH1 z@dJ49;0NHK9`x?jM(=ttUW^|61nOB|OH3>WO&3n)O}e|C*?BWNzwJ(@X_qe-Y+t}l zsp{N^v#gJ48Z!VGV>)gYu+kDshlsG54UEaew5yl5>}&U8fhw%>3hRIDo%SX{zwrBLXs!5h9*f34u|jfajd?kG`}fTJ&T z6rWD&@7eL_4okgF-AgT`()vgJvA(M7$xq3rNs$~)d`mn_Y$eS2&-k18cKlMjKlU#6 zBvy!>h<=UkL~jSXWfVmMBtQZrKmsH{0{^$b>`<7EnwhEHgH{x-FFYs-W#5t>_rP>H zZMl%Z_3TbzDT&1e8ThxXq`nsEdlbRolffds8T{ z6_zy$OV@^fynZxxJj~9W%4jC!RAUQ!7EqGPmw2(bS}pO`nsrVJXI-`~bSjxY7H0G3 zGm&D$Sr-b2h-+}Hpp>XXRo0;(acD5-aAkWqkW%x7ds{jjEYEK~_ppuZv{Cxp{wz!n zhS}LHUNMeUHR?E6?A+Ysj&z}j@p!m8hNpPV5qDd?XN?>8@9cbt%^I0~YaI=yHPEG2 z`rx$s18W`Gw^m;;tyGs<`oU=>gKAAB+7EKKPjK3Z?^`(*OgY-6^5KJ1js#Vn4Y!pe zUCxt6zWw}f;QSH6>2l^!+Z-paZfDK(WN$F+o-VON2ZyZ%#cusJucf{-d{H6+5+DH* fAOR8}0TLhq5+DH*AORBij|5^`&!D#Z*M*^9rA&