Python Projeto Prático: Sistema de Gerenciamento de Livros

sistema python

Nesta tutorial python, você aprenderá passo a passo como criar um sistema de gerenciamento de livros utilizando SQLite, desde a concepção do banco de dados até o deploy de produção. Este projeto é uma oportunidade prática para consolidar seu conhecimento sobre manipulação de bancos de dados em Python.

Índice do Tutorial

Etapa 1: Configuração do Ambiente

Antes de começar, é importante configurar o ambiente de desenvolvimento.

1. Instale o Python e SQLite:

Verifique se você tem o Python instalado:

				
					python --version

				
			

Instale o SQLite, caso necessário:

  • Windows: Baixe o SQLite e adicione ao PATH.
  • Linux/Mac: Já está pré-instalado.

2. Crie o ambiente virtual (opcional, mas recomendado):

				
					python -m venv env
source env/bin/activate  # Linux/Mac
env\Scripts\activate  # Windows

				
			

3. Instale as dependências necessárias (se houver):

Neste caso, utilizaremos apenas o módulo sqlite3, que já faz parte do Python padrão.

Etapa 2: Estrutura do Projeto

Organize os arquivos do projeto:

				
					gerenciador_livros/
│
├── main.py            # Arquivo principal do sistema
├── database.py        # Gerenciamento do banco de dados
├── interface.py       # Interface de usuário (terminal)
└── deploy/            # Scripts ou arquivos para produção (opcional)

				
			
Etapa 3: Criação do Banco de Dados

Crie o arquivo database.py para configurar e gerenciar o banco de dados

				
					import sqlite3

# Conexão com o banco de dados
def conectar():
    return sqlite3.connect('livraria.db')

# Criação da tabela de livros
def criar_tabela():
    conn = conectar()
    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
    )
    """)
    conn.commit()
    conn.close()

# Função para adicionar um livro
def adicionar_livro(titulo, autor, ano):
    conn = conectar()
    cursor = conn.cursor()
    cursor.execute("""
    INSERT INTO livros (titulo, autor, ano)
    VALUES (?, ?, ?)
    """, (titulo, autor, ano))
    conn.commit()
    conn.close()

# Função para listar todos os livros
def listar_livros():
    conn = conectar()
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM livros")
    livros = cursor.fetchall()
    conn.close()
    return livros

# Função para excluir um livro pelo ID
def excluir_livro(id_livro):
    conn = conectar()
    cursor = conn.cursor()
    cursor.execute("DELETE FROM livros WHERE id = ?", (id_livro,))
    conn.commit()
    conn.close()

				
			
Etapa 4: Criando a Interface do Usuário

No arquivo interface.py, implemente uma interface simples para o terminal.

				
					from database import criar_tabela, adicionar_livro, listar_livros, excluir_livro

def menu():
    print("\n==== Gerenciador de Livros ====")
    print("1. Adicionar Livro")
    print("2. Listar Livros")
    print("3. Excluir Livro")
    print("4. Sair")

def adicionar():
    titulo = input("Título: ")
    autor = input("Autor: ")
    ano = int(input("Ano: "))
    adicionar_livro(titulo, autor, ano)
    print("Livro adicionado com sucesso!")

def listar():
    livros = listar_livros()
    print("\n=== Lista de Livros ===")
    for livro in livros:
        print(f"ID: {livro[0]} | Título: {livro[1]} | Autor: {livro[2]} | Ano: {livro[3]}")

def excluir():
    id_livro = int(input("Digite o ID do livro a ser excluído: "))
    excluir_livro(id_livro)
    print("Livro excluído com sucesso!")

def main():
    criar_tabela()
    while True:
        menu()
        opcao = input("Escolha uma opção: ")
        if opcao == "1":
            adicionar()
        elif opcao == "2":
            listar()
        elif opcao == "3":
            excluir()
        elif opcao == "4":
            print("Saindo...")
            break
        else:
            print("Opção inválida! Tente novamente.")

				
			
Etapa 5: Testando o Sistema Localmente

1. Execute o arquivo principal main.py

				
					python main.py

				
			

2. Interaja com o menu e teste as funcionalidades:

  • Adicionar livros.
  • Listar livros.
  • Excluir livros.
Etapa 6: Preparando para o Deploy
Transforme o Sistema em uma Aplicação Web

Podemos usar o Flask para transformar o sistema em uma interface web.

1. Instale o Flask:

				
					pip install flask

				
			

2. Atualize a estrutura:

Crie um arquivo chamado app.py:

				
					from flask import Flask, render_template, request, redirect
from database import criar_tabela, adicionar_livro, listar_livros, excluir_livro

app = Flask(__name__)

@app.route("/")
def index():
    livros = listar_livros()
    return render_template("index.html", livros=livros)

@app.route("/adicionar", methods=["POST"])
def adicionar():
    titulo = request.form["titulo"]
    autor = request.form["autor"]
    ano = request.form["ano"]
    adicionar_livro(titulo, autor, ano)
    return redirect("/")

@app.route("/excluir/<int:id_livro>")
def excluir(id_livro):
    excluir_livro(id_livro)
    return redirect("/")

if __name__ == "__main__":
    criar_tabela()
    app.run(debug=True)


				
			

3. Crie um arquivo de template HTML (templates/index.html):

				
					<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Gerenciador de Livros</title>
</head>
<body>
    <h1>Gerenciador de Livros</h1>
    <form action="/adicionar" method="post">
        <input type="text" name="titulo" placeholder="Título" required>
        <input type="text" name="autor" placeholder="Autor" required>
        <input type="number" name="ano" placeholder="Ano" required>
        <button type="submit">Adicionar Livro</button>
    </form>
    <h2>Lista de Livros</h2>
    <ul>
        {% for livro in livros %}
        <li>
            {{ livro[1] }} - {{ livro[2] }} ({{ livro[3] }})
            <a href="/excluir/{{ livro[0] }}">Excluir</a>
        </li>
        {% endfor %}
    </ul>
</body>
</html>

				
			

4. Execute o sistema:

				
					python app.py

				
			
Etapa 7: Deploy de Produção

Você pode usar plataformas como Heroku ou Render para fazer o deploy do sistema.

1. Crie um arquivo requirements.txt com as dependências:

				
					Flask==2.2.2

				
			

2. Crie um arquivo requirements.txt com as dependências:

Exercício Final
  • Adapte o projeto para gerenciar outra entidade, como clientes ou produtos.
  • Inclua uma funcionalidade de pesquisa.
Conclusão

Neste tutorial, abordamos os fundamentos da manipulação de bancos de dados em Python, com exemplo prático e detalhado de um projeto prático. Dominar esses conceitos permite que você crie aplicações robustas e dinâmicas.

Lembrando que você pode ler a documentação Oficial do Python para aprender e tirar dúvidas

Notícias Relacionadas

Categorias

Redes Sociais