Introdução
Trabalhar com banco de dados é essencial em qualquer aplicação moderna. Para Python, existem diversas bibliotecas ORM que facilitam a interação com bancos SQL. Uma das mais simples e compactas é o Peewee. Ele é ideal para projetos pequenos, scripts e até microsserviços.
O Peewee ORM oferece tudo o que você precisa para definir modelos, executar consultas, trabalhar com transações e integrar com frameworks web — tudo isso com uma curva de aprendizado suave e fácil implementação.
Como funciona uma ORM e onde o Peewee se encaixa
O que é uma ORM
ORM (Object-Relational Mapping) é uma tecnologia que permite trabalhar com bancos de dados usando objetos da linguagem de programação. Em vez de escrever SQL puro, você cria e manipula classes Python, e a ORM converte tudo em SQL automaticamente.
A ORM fornece uma camada de abstração sobre o SQL, tornando o código mais legível e menos propenso a erros. Os principais benefícios de usar uma ORM incluem:
- Geração automática de consultas SQL
- Proteção contra injeção de SQL
- Portabilidade entre diferentes bancos de dados
- Facilidade ao trabalhar com objetos Python
Quando escolher o Peewee
O Peewee é uma excelente escolha nos seguintes cenários:
- Quando você precisa de uma ferramenta simples e leve
- Para projetos pequenos ou experimentais
- Quando a velocidade de desenvolvimento é prioridade, sem configurações complexas
- Para prototipagem e aplicações web de pequeno porte
- Para aplicações desktop com banco de dados local
Instalação e configuração básica
Instalando o Peewee
Você pode instalar o Peewee via pip:
pip install peewee
Para trabalhar com diferentes bancos de dados, você precisará de pacotes adicionais:
# Para PostgreSQL
pip install psycopg2-binary
# Para MySQL
pip install PyMySQL
# Para SQLite (já incluso no Python)
# nenhum pacote extra é necessário
Conectando ao banco de dados
O Peewee suporta vários tipos de banco de dados:
from peewee import SqliteDatabase, PostgresqlDatabase, MySQLDatabase
# SQLite
db = SqliteDatabase('meu_banco.db')
# PostgreSQL
db = PostgresqlDatabase('meudb', user='usuario', password='senha', host='localhost', port=5432)
# MySQL
db = MySQLDatabase('meudb', user='usuario', password='senha', host='localhost', port=3306)
Criando modelos de dados
Modelo básico
from peewee import Model, CharField, DateField, IntegerField, TextField
class BaseModel(Model):
class Meta:
database = db
class Autor(BaseModel):
nome = CharField(max_length=100)
data_nascimento = DateField()
biografia = TextField(null=True)
class Livro(BaseModel):
titulo = CharField(max_length=200)
isbn = CharField(max_length=13, unique=True)
paginas = IntegerField()
ano_publicacao = IntegerField()
autor = ForeignKeyField(Autor, backref='livros')
Criando as tabelas
db.connect()
db.create_tables([Autor, Livro])
Tipos de campos no Peewee
Principais tipos de campo
| Tipo de campo | Descrição | Parâmetros |
|---|---|---|
| CharField | String com limite de caracteres | max_length, unique, null |
| TextField | Texto sem limite de tamanho | null |
| IntegerField | Número inteiro | null, unique |
| FloatField | Número de ponto flutuante | null, unique |
| BooleanField | Valor booleano | null, default |
| DateField | Data | null, default |
| DateTimeField | Data e hora |