Introducción
Trabajar con bases de datos es una parte esencial de cualquier programa moderno. Para Python existen muchas bibliotecas ORM que permiten interactuar cómodamente con bases SQL. Una de las más simples y compactas es Peewee. Es ideal para proyectos pequeños, scripts e incluso microservicios.
Peewee, una ORM ligera, ofrece todo lo necesario para definir modelos, ejecutar consultas, manejar transacciones e integrarse con frameworks web, todo ello fácil de aprender e implementar.
Principios de funcionamiento de las ORM y el lugar de Peewee
¿Qué es una ORM?
ORM (Object-Relational Mapping) es una tecnología que permite trabajar con bases de datos a través de objetos del lenguaje de programación. En lugar de escribir consultas SQL, creas e interactúas con clases de Python, y la ORM las convierte en SQL.
La ORM proporciona una abstracción sobre SQL, haciendo que el código sea más legible y menos propenso a errores. Las principales ventajas de usar una ORM son:
- Generación automática de consultas SQL
- Protección contra inyecciones SQL
- Portabilidad entre diferentes sistemas de gestión de bases de datos
- Facilidad para trabajar con objetos de Python
¿Cuándo elegir Peewee?
Peewee es una excelente opción en los siguientes casos:
- Cuando necesitas una herramienta simple y ligera
- Si tu proyecto es pequeño o experimental
- Cuando la velocidad de desarrollo es importante sin configuraciones complejas
- Para prototipado y aplicaciones web pequeñas
- Para aplicaciones de escritorio con base de datos local
Instalación y configuración básica
Instalación de Peewee
Puedes instalar Peewee usando pip:
pip install peewee
Para trabajar con diferentes sistemas de bases de datos, necesitarás paquetes adicionales:
# Para PostgreSQL
pip install psycopg2-binary
# Para MySQL
pip install PyMySQL
# Para SQLite (incluido en Python)
# no se requieren paquetes adicionales
Conexión a la base de datos
Peewee admite varios tipos de bases de datos:
from peewee import SqliteDatabase, PostgresqlDatabase, MySQLDatabase
# SQLite
db = SqliteDatabase('mi_base_de_datos.db')
# PostgreSQL
db = PostgresqlDatabase('mibd', user='usuario', password='contraseña', host='localhost', port=5432)
# MySQL
db = MySQLDatabase('mibd', user='usuario', password='contraseña', host='localhost', port=3306)
Creación de modelos de datos
Modelo básico
from peewee import Model, CharField, DateField, IntegerField, TextField
class BaseModel(Model):
class Meta:
database = db
class Autor(BaseModel):
nombre = CharField(max_length=100)
fecha_nacimiento = DateField()
biografia = TextField(null=True)
class Libro(BaseModel):
titulo = CharField(max_length=200)
isbn = CharField(max_length=13, unique=True)
paginas = IntegerField()
anio_publicacion = IntegerField()
autor = ForeignKeyField(Autor, backref='libros')
Creación de tablas
db.connect()
db.create_tables([Autor, Libro])
Tipos de campos en Peewee
Tipos de campos principales
| Tipo de campo | Descripción | Parámetros |
|---|---|---|
| CharField | Cadena con límite de longitud | max_length, unique, null |
| TextField | Texto sin límite de longitud | null |
| IntegerField | Número entero | null, unique |
| FloatField | Número de punto flotante | null, unique |
| BooleanField | Valor booleano | null, default |
| DateField | Fecha | null, default |
| DateTimeField | Fecha y hora |