1
resposta

minha solução

import sqlite3

conectar = lambda database: sqlite3.connect(database)

def criar_tabela(db, nome_tabela, parametros):
    conn = conectar(db)
    cursor = conn.cursor()
    cursor.execute(f"CREATE TABLE IF NOT EXISTS {nome_tabela}({parametros})")
    conn.commit()
    conn.close()

def criar_produto(db, nome, preco):
    conn = conectar(db)
    cursor = conn.cursor()
    cursor.execute(
        """
            INSERT INTO produtos (nome, preco) \
            VALUES (?, ?)
        """, (nome, preco)
    )
    conn.commit()
    conn.close()

def ler_tudo_da_tabela(db, nome_tabela):
    conn = conectar(db)
    cursor = conn.cursor()
    cursor.execute(f"SELECT * FROM {nome_tabela}")
    dados = cursor.fetchall()
    conn.commit()
    conn.close()
    return dados
    
if __name__ == "__main__":
    caminho = "loja.db"
    criar_tabela(caminho, "produtos", "id INTEGER PRIMARY KEY AUTOINCREMENT, nome TEXT, preco REAL")
    criar_produto(caminho, "caderno", 7.95)
    criar_produto(caminho, "caneta bic azul", 3.20)
    criar_produto(caminho, "caneta bic vermelha", 3.70)
    produtos = ler_tudo_da_tabela(caminho, "produtos")
    print("Produtos:")
    for produto in produtos:
        print(f"Id: {produto[0]}, Nome: {produto[1]}, Preço: {produto[2]}")
1 resposta

Oii Gabriel, como você está?

Meus parabéns pela apresentação da sua resolução da atividade!

Sua solução ficou excelente e muito bem estruturada! É muito legal ver que você utilizou uma função lambda para gerenciar a conexão e separou as responsabilidades em funções específicas para criar a tabela, inserir produtos e listar os dados. Isso demonstra um ótimo domínio da lógica de programação e das boas práticas de organização de código.

Conte sempre com a Alura para evoluir seus estudos.

Bons estudos!

Sucesso

Imagem da comunidade