Claude Code

Claude Code + Python: Guia Completo para Devs Backend

minhaskills.io Claude Code + Python: Guia Completo para Devs Backend Claude Code
minhaskills.io 2 abr 2026 14 min de leitura

Python e a linguagem mais popular do mundo por um motivo: serve para tudo. APIs, data science, automacao, machine learning, scripts de infraestrutura. Mas todo dev Python sabe que escrever boilerplate de API, configurar ORMs, criar testes e debugar codigo consome horas que poderiam ser usadas em logica de negocio.

O Claude Code muda isso. Ele nao gera snippets genericos copiados do Stack Overflow. Ele le o seu projeto inteiro -- entende se voce usa FastAPI com SQLAlchemy, Django com DRF, ou Flask com Marshmallow -- e gera codigo que segue exatamente os padroes da sua codebase. Ele entende suas models, seus schemas, suas convencoes de nomenclatura.

Neste guia, voce vai ver exemplos reais de como usar Claude Code para cada area do desenvolvimento Python backend: APIs REST, ORMs, data science, automacao, testes e refatoracao. Tudo com comandos que voce pode executar hoje no seu terminal.

1. Por que Claude Code e o melhor parceiro para Python

Python e uma linguagem expressiva, mas projetos backend crescem rapido. Uma API com 20 endpoints, cada um com validacao, autenticacao, tratamento de erros e testes, facilmente chega a milhares de linhas. O Claude Code acelera esse trabalho porque opera diretamente na sua codebase.

Diferente de chatbots que geram codigo isolado, o Claude Code:

O resultado: voce descreve o que precisa em linguagem natural e o Claude Code implementa, testa e valida. Sem copiar e colar, sem adaptar snippets, sem debugar codigo generico.

Importante: o Claude Code funciona com qualquer versao do Python 3.8+. Ele detecta automaticamente a versao do seu projeto pelo pyproject.toml, setup.cfg ou requirements.txt e gera codigo compativel.

2. Criando APIs com FastAPI

FastAPI e o framework Python mais rapido para criar APIs REST. O Claude Code domina FastAPI porque entende o ecossistema completo: Pydantic para validacao, SQLAlchemy para ORM, Alembic para migrations, e a documentacao OpenAPI automatica.

Criando um CRUD completo

Claude Code
> crie um CRUD completo para a entidade "Product" com campos:
name (str), price (Decimal), category (str), active (bool).
Inclua: model SQLAlchemy, schemas Pydantic, router FastAPI
com paginacao, e testes pytest. Use o padrao do projeto.

O Claude Code gera todos os arquivos necessarios:

# app/models/product.py
from sqlalchemy import Column, Integer, String, Numeric, Boolean
from sqlalchemy.orm import Mapped, mapped_column
from app.database import Base

class Product(Base):
    __tablename__ = "products"

    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str] = mapped_column(String(255), nullable=False)
    price: Mapped[float] = mapped_column(Numeric(10, 2), nullable=False)
    category: Mapped[str] = mapped_column(String(100), nullable=False)
    active: Mapped[bool] = mapped_column(Boolean, default=True)
# app/schemas/product.py
from pydantic import BaseModel, Field
from decimal import Decimal

class ProductBase(BaseModel):
    name: str = Field(..., min_length=1, max_length=255)
    price: Decimal = Field(..., gt=0, decimal_places=2)
    category: str = Field(..., min_length=1, max_length=100)
    active: bool = True

class ProductCreate(ProductBase):
    pass

class ProductUpdate(ProductBase):
    name: str | None = None
    price: Decimal | None = None
    category: str | None = None
    active: bool | None = None

class ProductResponse(ProductBase):
    id: int

    model_config = {"from_attributes": True}
# app/routers/products.py
from fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy.ext.asyncio import AsyncSession
from app.database import get_db
from app.models.product import Product
from app.schemas.product import ProductCreate, ProductUpdate, ProductResponse
from sqlalchemy import select, func

router = APIRouter(prefix="/products", tags=["products"])

@router.get("/", response_model=list[ProductResponse])
async def list_products(
    skip: int = Query(0, ge=0),
    limit: int = Query(20, ge=1, le=100),
    category: str | None = None,
    db: AsyncSession = Depends(get_db),
):
    query = select(Product).where(Product.active == True)
    if category:
        query = query.where(Product.category == category)
    query = query.offset(skip).limit(limit)
    result = await db.execute(query)
    return result.scalars().all()

@router.post("/", response_model=ProductResponse, status_code=201)
async def create_product(
    data: ProductCreate,
    db: AsyncSession = Depends(get_db),
):
    product = Product(**data.model_dump())
    db.add(product)
    await db.commit()
    await db.refresh(product)
    return product

@router.get("/{product_id}", response_model=ProductResponse)
async def get_product(product_id: int, db: AsyncSession = Depends(get_db)):
    product = await db.get(Product, product_id)
    if not product:
        raise HTTPException(status_code=404, detail="Product not found")
    return product

@router.patch("/{product_id}", response_model=ProductResponse)
async def update_product(
    product_id: int,
    data: ProductUpdate,
    db: AsyncSession = Depends(get_db),
):
    product = await db.get(Product, product_id)
    if not product:
        raise HTTPException(status_code=404, detail="Product not found")
    for key, value in data.model_dump(exclude_unset=True).items():
        setattr(product, key, value)
    await db.commit()
    await db.refresh(product)
    return product

Note como o Claude Code usou async/await porque detectou que o projeto usa SQLAlchemy async. Usou Mapped e mapped_column porque o projeto esta no SQLAlchemy 2.0+. E adicionou paginacao com Query validando limites. Tudo seguindo o padrao existente.

Autenticacao JWT

Claude Code
> adicione autenticacao JWT ao projeto. Crie: model User com
hash de senha bcrypt, endpoints de register e login, dependency
de autenticacao para proteger rotas, e testes completos.

O Claude Code implementa o fluxo completo: hashing com passlib/bcrypt, tokens JWT com python-jose, dependency get_current_user para injetar nos endpoints protegidos, e testes que cobrem registro, login, token invalido e token expirado.

3. Django: models, views e migrations

Django e o framework mais completo para aplicacoes web Python. O Claude Code entende o ecossistema Django inteiro: models com ORM, views baseadas em classe e funcao, Django REST Framework, admin, signals, middleware e migrations.

Criando uma app Django completa

Claude Code
> crie uma app Django chamada "orders" com models Order e
OrderItem. Order tem relacao com User, status (choices), total
calculado. OrderItem tem relacao com Product e quantidade.
Inclua: serializers DRF, viewsets, permissions, admin e testes.
# orders/models.py
from django.db import models
from django.conf import settings

class Order(models.Model):
    class Status(models.TextChoices):
        PENDING = "pending", "Pendente"
        CONFIRMED = "confirmed", "Confirmado"
        SHIPPED = "shipped", "Enviado"
        DELIVERED = "delivered", "Entregue"
        CANCELLED = "cancelled", "Cancelado"

    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name="orders",
    )
    status = models.CharField(
        max_length=20,
        choices=Status.choices,
        default=Status.PENDING,
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    @property
    def total(self):
        return sum(item.subtotal for item in self.items.all())

    class Meta:
        ordering = ["-created_at"]

class OrderItem(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name="items")
    product = models.ForeignKey("products.Product", on_delete=models.PROTECT)
    quantity = models.PositiveIntegerField(default=1)
    unit_price = models.DecimalField(max_digits=10, decimal_places=2)

    @property
    def subtotal(self):
        return self.quantity * self.unit_price

O Claude Code tambem gera a migration, registra no admin com inlines, cria serializers aninhados no DRF e adiciona permissions para que cada usuario so veja seus proprios pedidos.

Django signals e middleware

Precisa de logica automatica quando um pedido muda de status? O Claude Code cria signals Django que disparam notificacoes, atualizam estoque ou registram logs de auditoria. Ele entende o ciclo de vida completo dos models Django.

4. Flask: microservicos e APIs leves

Flask e ideal para microservicos e APIs leves. O Claude Code gera aplicacoes Flask organizadas com blueprints, extensoes e padroes de projetos profissionais.

Claude Code
> crie um microservico Flask para processamento de pagamentos.
Blueprints para webhooks (Stripe) e transacoes. Use Flask-SQLAlchemy,
Flask-Marshmallow para serialization, e estruture com application
factory pattern. Inclua health check e testes.
# app/__init__.py
from flask import Flask
from app.extensions import db, ma, migrate
from app.webhooks import webhooks_bp
from app.transactions import transactions_bp

def create_app(config_name="default"):
    app = Flask(__name__)
    app.config.from_object(f"app.config.{config_name}")

    db.init_app(app)
    ma.init_app(app)
    migrate.init_app(app, db)

    app.register_blueprint(webhooks_bp, url_prefix="/webhooks")
    app.register_blueprint(transactions_bp, url_prefix="/api/transactions")

    @app.route("/health")
    def health():
        return {"status": "ok", "service": "payments"}, 200

    return app

O Claude Code cria a estrutura completa com factory pattern, configuracoes por ambiente (dev, staging, prod), blueprints separados e extensoes inicializadas corretamente. O mesmo padrao que voce veria em projetos Flask profissionais.

Isso ai em cima? Skills fazem automaticamente.

Cada tecnica que voce esta lendo pode ser transformada em skill — um comando que o Claude executa perfeitamente, toda vez. O Mega Bundle tem 748+ skills prontas para marketing, dev, SEO, copy e mais.

Ver Skills Prontas — R$19

5. Data science e analise de dados

Python domina data science, e o Claude Code acelera drasticamente o trabalho com dados. Ele gera scripts de analise com pandas, visualizacoes com matplotlib/seaborn, e pipelines de processamento completos.

Analise exploratoria automatizada

Claude Code
> analise o arquivo vendas_2025.csv. Faca: limpeza de dados,
analise exploratoria com estatisticas descritivas, identifique
tendencias mensais, top produtos e sazonalidade. Gere graficos
com matplotlib e salve um relatorio em HTML.
import pandas as pd
import matplotlib.pyplot as plt
from pathlib import Path

df = pd.read_csv("vendas_2025.csv", parse_dates=["data"])

# Limpeza
df = df.dropna(subset=["valor", "produto"])
df = df[df["valor"] > 0]
df["mes"] = df["data"].dt.to_period("M")

# Tendencia mensal
mensal = df.groupby("mes").agg(
    receita=("valor", "sum"),
    pedidos=("id", "count"),
    ticket_medio=("valor", "mean"),
).reset_index()

# Top 10 produtos
top_produtos = (
    df.groupby("produto")["valor"]
    .sum()
    .sort_values(ascending=False)
    .head(10)
)

# Visualizacao
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
mensal.plot(x="mes", y="receita", ax=axes[0, 0], title="Receita Mensal")
mensal.plot(x="mes", y="pedidos", ax=axes[0, 1], title="Pedidos por Mes")
top_produtos.plot(kind="barh", ax=axes[1, 0], title="Top 10 Produtos")
mensal.plot(x="mes", y="ticket_medio", ax=axes[1, 1], title="Ticket Medio")
plt.tight_layout()
plt.savefig("relatorio_vendas.png", dpi=150)

O Claude Code nao apenas gera o codigo -- ele executa, verifica se os graficos foram gerados corretamente e reporta os insights encontrados nos dados. Se encontrar problemas na qualidade dos dados (valores nulos, duplicatas, outliers), ele alerta e sugere tratamento.

Machine learning pipelines

Para projetos de ML, o Claude Code cria pipelines completos com scikit-learn: pre-processamento, feature engineering, treinamento, validacao cruzada e metricas. Ele entende a diferenca entre problemas de classificacao e regressao e escolhe as metricas corretas automaticamente.

6. Scripts e automacao

Python e a linguagem favorita para automacao, e o Claude Code cria scripts robustos que voce pode confiar para rodar em producao.

Automacao de tarefas repetitivas

Claude Code
> crie um script que monitore uma pasta por novos arquivos CSV,
processe cada um (limpe dados, valide formato, calcule metricas)
e envie um resumo por email via SMTP. Use watchdog para monitorar
e logging para rastrear execucoes.
# scripts/csv_monitor.py
import logging
import smtplib
from email.mime.text import MIMEText
from pathlib import Path
from watchdog.observers import Observer
from watchdog.events import FileCreatedEvent, FileSystemEventHandler
import pandas as pd

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s",
    handlers=[
        logging.FileHandler("monitor.log"),
        logging.StreamHandler(),
    ],
)
logger = logging.getLogger(__name__)

class CSVHandler(FileSystemEventHandler):
    def on_created(self, event):
        if not isinstance(event, FileCreatedEvent):
            return
        if not event.src_path.endswith(".csv"):
            return

        logger.info(f"Novo arquivo detectado: {event.src_path}")
        try:
            df = pd.read_csv(event.src_path)
            resumo = self._processar(df, event.src_path)
            self._enviar_email(resumo)
            logger.info(f"Processado com sucesso: {event.src_path}")
        except Exception as e:
            logger.error(f"Erro ao processar {event.src_path}: {e}")

    def _processar(self, df: pd.DataFrame, path: str) -> str:
        linhas_originais = len(df)
        df = df.dropna()
        linhas_limpas = len(df)

        return (
            f"Arquivo: {Path(path).name}\n"
            f"Linhas: {linhas_originais} (removidas: {linhas_originais - linhas_limpas})\n"
            f"Colunas: {', '.join(df.columns)}\n"
            f"Resumo:\n{df.describe().to_string()}"
        )

    def _enviar_email(self, corpo: str):
        msg = MIMEText(corpo)
        msg["Subject"] = "Novo CSV processado"
        msg["From"] = "monitor@empresa.com"
        msg["To"] = "equipe@empresa.com"
        with smtplib.SMTP("smtp.empresa.com", 587) as server:
            server.starttls()
            server.login("monitor@empresa.com", "senha")
            server.send_message(msg)

O Claude Code cria scripts com tratamento de erros robusto, logging profissional e estrutura que funciona em producao. Nao e codigo de tutorial -- e codigo de producao.

Web scraping etico

Para coleta de dados, o Claude Code gera scrapers com requests/httpx e BeautifulSoup ou Playwright, respeitando robots.txt, implementando rate limiting e salvando dados de forma estruturada. Ele tambem cria fallbacks para quando a estrutura do site muda.

7. Testes com pytest

Testes sao a area onde o Claude Code mais economiza tempo. Ele gera testes pytest completos, com fixtures, mocks, parametrize e cobertura de edge cases -- tudo seguindo as convencoes do seu projeto.

Testes para API FastAPI

# tests/test_products.py
import pytest
from httpx import AsyncClient, ASGITransport
from app.main import app
from app.database import get_db

@pytest.fixture
async def client(db_session):
    async def override_get_db():
        yield db_session

    app.dependency_overrides[get_db] = override_get_db
    transport = ASGITransport(app=app)
    async with AsyncClient(transport=transport, base_url="http://test") as ac:
        yield ac
    app.dependency_overrides.clear()

@pytest.mark.asyncio
async def test_create_product(client):
    response = await client.post("/products/", json={
        "name": "Widget",
        "price": "29.99",
        "category": "electronics",
    })
    assert response.status_code == 201
    data = response.json()
    assert data["name"] == "Widget"
    assert data["id"] is not None

@pytest.mark.asyncio
async def test_create_product_invalid_price(client):
    response = await client.post("/products/", json={
        "name": "Widget",
        "price": "-5.00",
        "category": "electronics",
    })
    assert response.status_code == 422

@pytest.mark.asyncio
async def test_list_products_pagination(client, sample_products):
    response = await client.get("/products/?limit=5&skip=0")
    assert response.status_code == 200
    data = response.json()
    assert len(data) <= 5

@pytest.mark.asyncio
async def test_get_product_not_found(client):
    response = await client.get("/products/99999")
    assert response.status_code == 404

O Claude Code gera testes que cobrem o caminho feliz (happy path), validacao de entrada, erros esperados e paginacao. Ele tambem cria as fixtures necessarias no conftest.py: sessao de banco de dados de teste, dados de exemplo e cleanup automatico.

Cobertura em massa

Claude Code
> rode pytest --cov e identifique modulos com cobertura abaixo
de 80%. Crie testes para aumentar a cobertura desses modulos.
Foque em branches nao cobertas e edge cases.

O Claude Code analisa o relatorio de cobertura, identifica exatamente quais linhas e branches nao estao cobertas e gera testes especificos para elas. Aumentar cobertura de 60% para 90% pode levar dias manualmente -- com Claude Code, leva minutos.

8. Refatoracao e qualidade de codigo

Codigo Python legado com funcoes de 200 linhas, sem type hints e sem testes e realidade em muitos projetos. O Claude Code refatora codigo mantendo o comportamento identico.

Claude Code
> refatore o modulo app/services/payment.py: extraia funcoes
grandes em funcoes menores, adicione type hints completos,
docstrings Google style, e trate excecoes especificas em vez
de bare except. Rode os testes apos cada mudanca.

O Claude Code tambem detecta e corrige:

Adicionar type hints em massa

Claude Code
> adicione type hints completos a todos os arquivos em app/.
Use tipos modernos (Python 3.10+): list em vez de List,
str | None em vez de Optional[str]. Rode mypy para verificar.

O Claude Code analisa cada funcao, infere os tipos corretos baseado no uso e adiciona type hints precisos. Ele roda mypy --strict para verificar que nenhum erro de tipo foi introduzido.

9. Workflows completos de backend

O verdadeiro poder do Claude Code aparece quando voce combina multiplas tarefas em workflows completos. Esses sao os workflows mais comuns para devs Python backend:

Workflow 1: feature completa end-to-end

Claude Code
> implemente o sistema de cupons de desconto: model Coupon
(codigo, percentual, validade, uso maximo), endpoint para validar
cupom, integracao com o fluxo de checkout existente, e testes
completos. Rode pytest para verificar.

O Claude Code cria o model, migration, schemas, endpoints, integra com o checkout existente, adiciona validacoes de negocio (cupom expirado, uso maximo atingido, valor minimo do pedido) e gera testes para todos os cenarios. Uma feature que levaria um dia, entregue em minutos.

Workflow 2: debug e investigacao

Claude Code
> o endpoint POST /orders/ esta retornando 500 intermitente.
Analise o codigo, identifique possiveis race conditions ou
problemas de conexao com o banco, e corrija. Adicione testes
que reproduzam o problema.

Workflow 3: migracao de framework

Claude Code
> migre esta API de Flask para FastAPI. Converta blueprints
para routers, Marshmallow para Pydantic, e Flask-SQLAlchemy
para SQLAlchemy async. Mantenha todos os endpoints com o mesmo
comportamento. Rode os testes apos cada mudanca.

O Claude Code faz a migracao arquivo por arquivo, validando com testes a cada etapa. Ele entende as diferencas entre frameworks e traduz padroes automaticamente: decorators de rota, middleware, injecao de dependencias e tratamento de erros.

Dica de produtividade: crie skills especificas para os padroes do seu projeto. Uma skill /api-endpoint com suas convencoes de nomenclatura, validacao e tratamento de erros garante consistencia em toda a codebase. O pacote de skills dev do minhaskills.io inclui dezenas de skills prontas para Python backend.

OFERTA ESPECIAL — TEMPO LIMITADO

O Maior Pacote de Skills de IA do Mercado

748+ Skills + 12 Bonus Packs + 120.000 Prompts

748+
Skills Profissionais
Marketing, SEO, Copy, Dev, Social
12
Pacotes Bonus GitHub
8.107 skills + 4.076 workflows
100K+
Prompts de IA
ChatGPT, Claude, Gemini, Midjourney
135
Agents Prontos
Automacao, dados, negocio, dev

De R$197

R$19

Pagamento unico • Acesso vitalicio • Atualizacoes gratis

QUERO O MEGA BUNDLE AGORA

Instale em 2 minutos • Funciona com Claude Code, Cursor, ChatGPT • 7 dias de garantia

✓ SEO & GEO (20 skills) ✓ Copywriting (34 skills) ✓ Dev (284 skills) ✓ Social Media (170 skills) ✓ n8n Templates (4.076)

Perguntas frequentes

Sim. O Claude Code le a estrutura completa do projeto, incluindo modulos, pacotes, virtualenvs e dependencias. Ele entende padroes como Django apps, FastAPI routers, e estruturas de pacotes com __init__.py. Em projetos com centenas de arquivos, ele navega e modifica o codigo respeitando a arquitetura existente. Ele tambem entende ORMs como SQLAlchemy e Django ORM, respeitando models e migrations.

Sim, e esse e um dos melhores casos de uso. Voce descreve os endpoints que precisa e o Claude Code cria a API completa: rotas, validacao com Pydantic, autenticacao, conexao com banco de dados, tratamento de erros e testes. Ele gera codigo para FastAPI, Django REST Framework ou Flask, dependendo do framework do seu projeto. Tambem cria documentacao OpenAPI automaticamente.

Sim. O Claude Code gera testes pytest completos com fixtures, parametrize, mocks e cobertura de edge cases. Ele segue as convencoes do projeto (conftest.py, estrutura de pastas de testes) e cria testes que realmente validam a logica de negocio. Para APIs, ele gera testes com TestClient do FastAPI ou pytest-django, cobrindo status codes, payloads e cenarios de erro.

Compartilhe este artigo X / Twitter LinkedIn Facebook WhatsApp
PTENES