Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Minha resolução do "Desafio: Python e o banco de dados"

import sqlite3

Função que cria a conexão com o banco de dados

def conectar():
conn = sqlite3.connect('loja.db')
return conn

Função que cria a tabela de produtos

def criar_tabela_produtos():
### Conecta ao banco de dados
conn = conectar()
### Cria o cursor
cursor = conn.cursor()
### Preparamos a execuçaõ do comando SQLite
cursor.execute(
"""
CREATE TABLE IF NOT EXISTS produtos(
id INTEGER PRIMARY KEY,
nome TEXT,
preco DECIMAL(10,2)
)
"""
)
### Confirma a execução
conn.commit()
### Fecha a execução
conn.close()

Função adiciona os dados nome e preço dos produtos banco de dados

def criar_produto(nome,preco):
conn = conectar()
cursor = conn.cursor()
cursor.execute(
"""
INSERT INTO produtos (nome, preco)
VALUES (?,?)
""",(nome,preco)
)
### Confirma a execução
conn.commit()
### Fecha a execução
conn.close()

Função listar os produtos

def listar_produtos():
conn = conectar()
cursor = conn.cursor()
cursor.execute(
"""
SELECT * FROM produtos
"""
)

### Salvamos os produtos em uma variável
produtos = cursor.fetchall()

### Percorremos a variável criada
for produto in produtos:

    ### Imprimimos os produtos
    print(produto)

### Confirma a execução
conn.commit()

### Fechamos a execução
conn.close()

Terminal:

exec(open('loja.py').read())

criar_produto('Banana', 6.99)

criar_produto('Maça', 2.11)
criar_produto('Laranja', 5.50)
listar_produtos()
(1, 'Banana', 6.99)
(2, 'Maça', 2.11)
(3, 'Laranja', 5.5)

1 resposta

Olá, Rodrigo. Como vai?

Obrigado por compartilhar sua resolução do desafio. Você organizou a solução em funções separadas para conectar ao banco, criar a tabela, inserir produtos e listar os registros, o que deixa o código mais modular e facilita futuras manutenções e expansões.

As operações de criação da tabela, inserção dos produtos e consulta dos dados estão funcionando conforme esperado, e a saída do terminal confirma que os registros foram armazenados e recuperados corretamente. Uma dica para evoluir essa implementação seria adicionar novas funções, como atualizar o preço de um produto ou remover um item do banco. Isso deixaria o projeto mais próximo de um sistema de gerenciamento de estoque utilizado em situações reais. Outra possibilidade seria incluir restrições, como impedir que produtos sejam cadastrados com preço negativo.

Se você fosse expandir esse projeto, qual funcionalidade adicionaria primeiro: busca de produtos pelo nome, atualização de preços ou exclusão de registros?

Parabéns pelo empenho na atividade e por compartilhar sua solução. O fórum está à disposição para acompanhar sua evolução e ajudar sempre que necessário.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!