Exemplo prático de Python para loja Açaí
Tutorial: Web Services em Python para a Tabela Clientes
Neste tutorial, vamos criar uma API REST simples em Python utilizando o Flask para consumir a tabela Clientes de um banco de dados SQLite. Você aprenderá como utilizar os principais verbos HTTP (GET, POST, PUT e DELETE) para realizar operações de leitura, criação, atualização e exclusão de registros.
Requisitos
- Python 3 instalado
- Pacote Flask (instalável via
pip install flask
) - Banco de dados SQLite já criado com a tabela
clientes
Estrutura da Tabela Clientes
Considere que a tabela clientes foi criada com a seguinte estrutura:
CREATE TABLE clientes (
id_cliente INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
telefone TEXT,
email TEXT
);
Código do Web Service
O código a seguir implementa uma API REST utilizando Flask. Ele define uma rota para cada operação (GET, POST, PUT e DELETE) na tabela clientes:
from flask import Flask, request, jsonify, abort
import sqlite3
app = Flask(__name__)
DATABASE = 'loja_acai.db' # Nome do banco de dados SQLite
def get_db():
"""Abre uma conexão com o banco de dados e define o row_factory para retornar dicts."""
conn = sqlite3.connect(DATABASE)
conn.row_factory = sqlite3.Row
return conn
# 1. GET /clientes - Retorna todos os clientes
@app.route('/clientes', methods=['GET'])
def get_clientes():
conn = get_db()
clientes = conn.execute("SELECT * FROM clientes").fetchall()
conn.close()
return jsonify([dict(row) for row in clientes])
# 2. GET /clientes/<id> - Retorna um cliente específico
@app.route('/clientes/<int:id>', methods=['GET'])
def get_cliente(id):
conn = get_db()
cliente = conn.execute("SELECT * FROM clientes WHERE id_cliente = ?", (id,)).fetchone()
conn.close()
if cliente is None:
abort(404)
return jsonify(dict(cliente))
# 3. POST /clientes - Cria um novo cliente
@app.route('/clientes', methods=['POST'])
def create_cliente():
if not request.json or 'nome' not in request.json:
abort(400)
cliente = {
'nome': request.json['nome'],
'telefone': request.json.get('telefone', ''),
'email': request.json.get('email', '')
}
conn = get_db()
cur = conn.cursor()
cur.execute("INSERT INTO clientes (nome, telefone, email) VALUES (?, ?, ?)",
(cliente['nome'], cliente['telefone'], cliente['email']))
conn.commit()
cliente['id_cliente'] = cur.lastrowid
conn.close()
return jsonify(cliente), 201
# 4. PUT /clientes/<id> - Atualiza um cliente existente
@app.route('/clientes/<int:id>', methods=['PUT'])
def update_cliente(id):
if not request.json:
abort(400)
campos = []
valores = []
for campo in ['nome', 'telefone', 'email']:
if campo in request.json:
campos.append(f"{campo} = ?")
valores.append(request.json[campo])
if not campos:
abort(400)
valores.append(id)
conn = get_db()
conn.execute(f"UPDATE clientes SET {', '.join(campos)} WHERE id_cliente = ?", valores)
conn.commit()
conn.close()
return jsonify({'result': True})
# 5. DELETE /clientes/<id> - Remove um cliente
@app.route('/clientes/<int:id>', methods=['DELETE'])
def delete_cliente(id):
conn = get_db()
conn.execute("DELETE FROM clientes WHERE id_cliente = ?", (id,))
conn.commit()
conn.close()
return jsonify({'result': True})
if __name__ == '__main__':
app.run(debug=True)
Entendendo os Verbos HTTP
Neste exemplo, utilizamos os seguintes métodos HTTP:
- GET: Utilizado para recuperar dados. Temos dois endpoints:
GET /clientes
– retorna todos os clientes;GET /clientes/<id>
– retorna um cliente específico.
- POST: Utilizado para criar um novo recurso. O endpoint
POST /clientes
recebe dados no formato JSON para inserir um novo cliente. - PUT: Utilizado para atualizar um recurso existente. O endpoint
PUT /clientes/<id>
recebe os campos que devem ser atualizados do cliente informado. - DELETE: Utilizado para remover um recurso. O endpoint
DELETE /clientes/<id>
exclui o cliente com o id informado.
Como Executar e Testar a API
Siga os passos abaixo para executar e testar a API:
- Salve o código em um arquivo, por exemplo,
app.py
. - Certifique-se de que o banco de dados
loja_acai.db
existe e contém a tabelaclientes
. - Instale o Flask se ainda não o fez:
pip install flask
- Execute o aplicativo:
python app.py
- Acesse os endpoints utilizando ferramentas como Postman ou o curl via linha de comando.
Conclusão
Este tutorial apresentou de forma didática como criar web services em Python para a tabela clientes utilizando Flask, explorando os verbos HTTP básicos necessários para a manipulação dos dados (GET, POST, PUT e DELETE). Essa estrutura pode ser facilmente expandida para incluir outras tabelas e funcionalidades em seu projeto.
Experimente testar e modificar os endpoints para adaptar à sua aplicação.