diff --git a/exercicios/para-casa/menu_livraria.py b/exercicios/para-casa/menu_livraria.py new file mode 100644 index 0000000..fdbbee9 --- /dev/null +++ b/exercicios/para-casa/menu_livraria.py @@ -0,0 +1,146 @@ +import csv +import sqlite3 + +def menu(): + while True: + print(' ') + print('---- LIVRARIA PONEINAC ----') + print('Criar um Database e uma tabela - 1') + print('Criar um arquivo CSV e inserir no Database os 5 últimos livros lidos - 2') + print('Consultar os registros do Database - 3') + print('Atualizar o preço de um registro do Database - 4') + print('Remover um registro do Database - 5') + print('Exportar registros do Database para arquivo CSV - 6') + print('Sair - 0') + + opt_cliente = input('Digite a opção desejada: ') + if opt_cliente == '1': + criar_db() + elif opt_cliente == '2': + csv_import() + elif opt_cliente == '3': + consulta_db() + elif opt_cliente == '4': + update_db() + elif opt_cliente == '5': + delete_db() + elif opt_cliente == '6': + export_db() + elif opt_cliente == '0': + print('Obrigada por usar o programa.') + break + else: + print('Essa opção não é válida.') + +def criar_db(): + 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() + cursor.close() + conn.close() + print("--- Seu Database 'livraria.db' e sua tabela 'livros' foi criada com sucesso. ---") + +def csv_import(): + colunas = ['id', 'titulo', 'autor', 'ano', 'texto'] + livros = [ + (1, 'Cartas para minha avó', 'Djamila Ribeiro', 2021, 36.78), + (2, 'Aurora', 'Marcela Ceribelli', 2022, 37.42), + (3, 'O peso do pássaro morto', 'Aline Bei', 2017, 51.80), + (4, 'Torto arado', 'Itamar Vieira Junior', 2019, 52.43), + (5, 'Primavera silenciosa', 'Rachel Carson', 1962, 50.99) + ] + + with open('./livros.csv', mode='w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile, delimiter= ',') + escritor.writerow(colunas) + escritor.writerows(livros) + + conn = sqlite3.connect("livraria.db") + cursor = conn.cursor() + print('--- Seus registros foram incluídos no arquivo .csv com sucesso. ---') + + with open ('livros.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + for linha in leitor: + print("--- Os livros da sua lista 'livros.csv' são os seguintes: ", linha, ". ---") + + with open ('livros.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + next(leitor) + for linha in leitor: + cursor.execute('INSERT INTO livros (id, titulo, autor, ano, preco) VALUES (?, ?, ?, ?, ?)', (linha [0], linha[1], linha[2], linha [3], linha[4])) + + conn.commit() + cursor.close() + conn.close() + print('--- Seus registros foram inseridos no Database com sucesso. ---') + +def consulta_db(): + conn = sqlite3.connect('livraria.db') + cursor = conn.cursor() + + cursor.execute('SELECT * FROM livros') + registros = cursor.fetchall() + for registro in registros: + print("--- Registros da tabela 'livros': ", registro, ". ---") + +def update_db(): + conn = sqlite3.connect('livraria.db') + cursor = conn.cursor() + opt_id = input('Digite o id do livro: ') + while (opt_id < '1') or (opt_id > '5'): + print('--- Essa é uma opção inválida. Digite novamente. ---') + opt_id = input('Digite o id do livro: ') + + opt_preco = float(input('Digite o preço atualizado - exemplo: 61.99: ')) + + cursor.execute("UPDATE livros SET preco = ? WHERE id = ?", (opt_preco, opt_id)) + + conn.commit() + cursor.close() + conn.close() + print('--- O preço do seu registro foi atualizado com sucesso. ---') + + +def delete_db(): + conn = sqlite3.connect("livraria.db") + cursor = conn.cursor() + opt_id = input('Digite o id do livro que você quer remover da lista: ') + while (opt_id < '1') or (opt_id > '5'): + print('--- Essa é uma opção inválida. Digite novamente. ---') + opt_id = input('Digite o id do livro que você quer remover da lista: ') + + cursor.execute("DELETE FROM livros WHERE id = ?", (opt_id,)) + + conn.commit() + cursor.close() + conn.close() + print('--- O registro escolhido foi excluído com sucesso. ---') + + +def export_db(): + conn = sqlite3.connect("livraria.db") + cursor = conn.cursor() + + cursor.execute("SELECT * FROM livros") + livros = cursor.fetchall() + + with open ('livros_exportados.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'titulo', 'autor', 'ano', 'preco']) + escritor.writerows(livros) + + cursor.close() + conn.close() + print("--- Os registros do Database foram exportados para o arquivo 'livros_exportados.csv' com sucesso! ---") + +menu() \ 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/empresa.db b/exercicios/para-sala/csv/empresa.db new file mode 100644 index 0000000..41c4799 Binary files /dev/null and b/exercicios/para-sala/csv/empresa.db differ 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/script.py b/exercicios/para-sala/csv/script.py new file mode 100644 index 0000000..943b5e2 --- /dev/null +++ b/exercicios/para-sala/csv/script.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/script01.py b/exercicios/para-sala/csv/script01.py new file mode 100644 index 0000000..629f708 --- /dev/null +++ b/exercicios/para-sala/csv/script01.py @@ -0,0 +1,23 @@ +import sqlite3 +import csv + +conn = sqlite3.connect('empresa.db') +cursor = conn.cursor() + +cursor.execute(""" +CREATE TABLE IF NOT EXISTS clientes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + email TEXT NOT NULL +) +""") + +with open('clientes.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + next(leitor) # Pular o cabeçalho + for linha in leitor: + cursor.execute("INSERT INTO clientes (nome, email) VALUES (?, ?)", (linha[1], linha[2])) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exemplos/exemplos.db b/exercicios/para-sala/exemplos/exemplos.db new file mode 100644 index 0000000..0fd4d8b Binary files /dev/null and b/exercicios/para-sala/exemplos/exemplos.db differ diff --git a/exercicios/para-sala/exemplos/script.py b/exercicios/para-sala/exemplos/script.py new file mode 100644 index 0000000..034986f --- /dev/null +++ b/exercicios/para-sala/exemplos/script.py @@ -0,0 +1,35 @@ +import sqlite3 + + +#EXPLICAÇÃO DOS COMANDOS + +#conexão +conn = sqlite3.connect("exemplos.db") +#criar o cursor para uso do SQL +cursor = conn.cursor() + +#colocar os comandos SQL +cursor.execute(""" + CREATE TABLE IF NOT EXISTS usuarios( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + idade INTEGER NOT NULL + ) + """) +#inserir os dados +cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('João', 43)") +cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('Flávia', 29)") + +#selecionar os dados inseridos +cursor.execute("SELECT * FROM usuarios") +#buscar as informações +registros = cursor.fetchall() + +#printar as informações +for registro in registros: + print(registro) +#commita a informação +conn.commit() +#fechar a conexão +cursor.close() +conn.close() diff --git a/exercicios/para-sala/exercicio/a_criar_tabela.py b/exercicios/para-sala/exercicio/a_criar_tabela.py new file mode 100644 index 0000000..b182af8 --- /dev/null +++ b/exercicios/para-sala/exercicio/a_criar_tabela.py @@ -0,0 +1,16 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +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/b_inserir_infos.py b/exercicios/para-sala/exercicio/b_inserir_infos.py new file mode 100644 index 0000000..2a405ec --- /dev/null +++ b/exercicios/para-sala/exercicio/b_inserir_infos.py @@ -0,0 +1,17 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +#lista com informações para a tabela +estudantes = [ + ('Alice', 21), + ('Bob', 22), + ('Charlie', 23) +] +#inserir várias informações na tabela de uma só vez +cursor.executemany("INSERT INTO estudantes (nome, idade) VALUES (?, ?)", estudantes) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/c_buscar_dados.py b/exercicios/para-sala/exercicio/c_buscar_dados.py new file mode 100644 index 0000000..0629a2a --- /dev/null +++ b/exercicios/para-sala/exercicio/c_buscar_dados.py @@ -0,0 +1,15 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +nome = input("Digite um nome: ") + +cursor.execute("SELECT nome FROM estudantes WHERE nome = ? ", (nome,)) +registros = cursor.fetchall() + +for registro in registros: + print(registro) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/d_atualizar_infos.py b/exercicios/para-sala/exercicio/d_atualizar_infos.py new file mode 100644 index 0000000..614a789 --- /dev/null +++ b/exercicios/para-sala/exercicio/d_atualizar_infos.py @@ -0,0 +1,14 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +nome = input("Digite um nome: ") +idade = input("Digite a idade: ") +id = input("Digite o id: ") + +cursor.execute("UPDATE estudantes SET nome = ?, idade = ? WHERE id = ?", (nome, idade, id)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/e_deletar_infos.py b/exercicios/para-sala/exercicio/e_deletar_infos.py new file mode 100644 index 0000000..ca0b240 --- /dev/null +++ b/exercicios/para-sala/exercicio/e_deletar_infos.py @@ -0,0 +1,10 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("DELETE FROM estudantes WHERE nome = ?", ('Charlie',)) + +conn.commit() +cursor.close() +conn.close() \ 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..035613d Binary files /dev/null and b/exercicios/para-sala/exercicio/escola.db differ diff --git a/exercicios/para-sala/exercicio/f_inserir_input.py b/exercicios/para-sala/exercicio/f_inserir_input.py new file mode 100644 index 0000000..fe4df8e --- /dev/null +++ b/exercicios/para-sala/exercicio/f_inserir_input.py @@ -0,0 +1,13 @@ +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +nome = input("Digite um nome: ") +idade = input("Digite a idade: ") + +cursor.execute("INSERT INTO estudantes (nome, idade) VALUES (?, ?)", (nome, idade)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file