0
respostas

[Dúvida] Esta conforme ?

import sqlite3

class Banco_dados:
    def __init__(self, nome_db="loja.db"):
        self.nome_db = nome_db
        self.conexao = None

    def conectar(self):
        if not self.conexao:
            self.conexao = sqlite3.connect(self.nome_db)
            print("Conexao SQLite OK")
        return self.conexao

    def fechar(self):
        if self.conexao:
            self.conexao.close()
            self.conexao = None
            print("Conexao SQLite fechada")
from loja_db import Banco_dados

class CriarBanco:
    def __init__(self, banco_dados: Banco_dados):
        self.banco_dados = banco_dados

    def criar_tabela(self):
        conn = self.banco_dados.conectar()

        try:
            cursor = conn.cursor()
            cursor.execute("""
                CREATE TABLE IF NOT EXISTS loja (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    nome TEXT NOT NULL,
                    preco REAL NOT NULL
                )
            """)
            conn.commit()
            print("Tabela criada ou verificada com sucesso")

        except Exception as e:
            conn.rollback()
            raise e
class Loja:
    def __init__(self, nome, preco, id=None):
        self.id = id
        self.nome = nome
        self.preco = preco
from loja import Loja
from loja_db import Banco_dados

class LojaDAO:
    def __init__(self, banco_dados: Banco_dados):
        self.banco_dados = banco_dados

    def inserir(self, loja: Loja):
        conn = self.banco_dados.conectar()

        try:
            cursor = conn.cursor()
            cursor.execute(
                "INSERT INTO loja (nome, preco) VALUES (?, ?)",
                (loja.nome, loja.preco)
            )
            conn.commit()

        except Exception as e:
            conn.rollback()
            raise e

    def listar(self):
        conn = self.banco_dados.conectar()

        cursor = conn.cursor()
        cursor.execute("SELECT id, nome, preco FROM loja")
        registros = cursor.fetchall()

        return [Loja(id=r[0], nome=r[1], preco=r[2]) for r in registros]
from loja_db import Banco_dados
from criador_bd import CriarBanco
from lojaDao import LojaDAO
from loja import Loja

def main():
    banco = Banco_dados("loja.db")

    criador = CriarBanco(banco)
    criador.criar_tabela()

    dao = LojaDAO(banco)

    dao.inserir(Loja(nome="Produto Teste", preco=19.90))
    dao.inserir(Loja(nome="Arroz", preco=20.00))

    for loja in dao.listar():
        print(loja.id, loja.nome, loja.preco)

    banco.fechar()

if __name__ == "__main__":
    main()