Peewee – Simple pero potente ORM

  
9 de Enero de 2015   0  

Las técnicas de ingeniería de software han ido evolucionando a pasos agigantados estos últimos años y una de las más importantes que no debemos dejar pasar, es el uso del mapeo objeto-relacional (ORM por sus siglas en inglés), la cual consiste en envolver los elementos de una base de datos y convertirlos en objetos abstractos que pueden ser manipulados muy fácilmente para la ejecución de acciones del tipo CRUD (Create, Retrieve, Update y Delete) sin necesidad conocer a fondo el uso del lenguaje SQL.

 

orm-python

Para Python existen diferentes librerías que hacen este trabajo de mapeo y el día de hoy hablaré de PEEWEE el cual he probado y me ha gustado por ser sencillo y al mismo tiempo potente en el manejo de los datos de diferentes motores relacionales.

Características.

  • Peewee es un ORM simple y pequeño, que podemos aprender a utilizar rápidamente ya que su manejo es muy intuitivo.
  • Está escrito en Python y tiene soporte para las versiones 2.6.+ y 3.2.+
  • Soporte para trabajar con SQLite, MySQL y PostGreSQL.
  • Cuenta con gran cantidad de extensiones disponibles en este link para el uso de Postres hstore, json, matrices, sqlite-full-text-search, esquema de migraciones y mucho más).

Ejemplo de uso.

Vamos a crear un objeto llamado “User”

1
2
3
4
5
6
7
8
9
10
11
from peewee import *
import datetime
 
db = SqliteDatabase('my_database.db', threadlocals=True)
 
class BaseModel(Model):
          class Meta:
                  database = db
 
class User(BaseModel):
            username = CharField(unique=True)

Ahora vamos a conectarnos a la base de datos (SQLite) y sincronizamos el modelo.

1
2
db.connect()
db.create_tables([User])

Posteriormente a esto, podremos crear algunos usuarios.

1
2
3
charlie = User.create(username='charlie')
alex = User(username='alex')
alex.save()

Y por último veamos un ejemplo de consulta básica.

1
User.get(User.username == 'charles')

Muy fácil no? Si deseas conocer más sobre este ORM te invito a visitar su documentación oficial.



Alex Dzul

FullStack Python / Django Developer. #jslove

Temas relacionados