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/")
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
):
Gerenciador de Livros
Gerenciador de Livros
Lista de Livros
{% for livro in livros %}
-
{{ livro[1] }} - {{ livro[2] }} ({{ livro[3] }})
Excluir
{% endfor %}
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