Peewee ORM: la guía ligera para bases de datos en Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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

Recommendations

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