El Blog de Trespams

Blog personal sobre tecnologia, gestió de projectes i coses que se me passen pel cap

Peewee

Peewee és d'aquestes eines que fas servir de tant en tant però que quan les necessites t'alegres de tenir-les al calaix.

Pewee és un ORM (un object relelational mapper) és a dir, una llibreria capaç de transformar tuples de bases de dades en objectes, en aquest cas en objectes Python.

La llibreria està força ben documentada i la instal·lació és trivial amb pip. ORM però, n'hi ha uns quants al món de Python, què em duu a destacar Peewee doncs?

El primer de tot que he de dir és que com tot no és una eina per fer-la servir quan no toca, com a ORM té les seves limitacions, no és tan complet com l'SQLAlchemy per exemple. Pewee però és fantàstic quan has de fer feines d'importació/exportació de dades.

Proporciona una capa molt fina d'ORM que pot connectar amb sqlite, mysql o postresql i té un mòdul d'instrospecció senzill per a permetre connectar-nos a una base de dades ja existent i generar els models que ens serviran per interactuar amb la base de dades.

Tant el model com la sintaxi de l'ORM recorden molt, de fet estan inspirats amb l'ORM de Django, per tant, si ja coneixeu Django, amb Peewee us sentireu com a casa.

No té cap dependència d'un bastiment, per tant pot utilitzar-se per fer scripts, i importacions de dades.

La documentació és simple, suficient, amb exemple i es pot llegir en pocs minuts. Si la comparam amb la d'SQLAlchemy en podrem veure la gran diferència. Peewee té una documentació per a començar a fer feina ràpid, SQLAlchemy la té per a convetir-se en l'ORM de la teva aplicació i que en puguis treure tot el suc a la base de dades.

Però no tot són floretes, fent una importació de dades de Mysql cap a Postgres em vaig trobar amb força problemes a l'hora de tractar relacions m2m on la clau primària era composta. L'ORM no funciona bé amb claus compostes i s'ha de fer feina addicional per a tractar-lo.

I per què volem un ORM us demanareu?

Bé, si us heu fet aquesta pregunta vol dir que no heu llegit el meu apunt Fer servir un ORM o no o que no li heu fet gaire cas :)

Python té el DB-API per fer consultes de base de dades, de la mateixa manera que Java té el JDBC. Però mantenir codi on les referències es fan per columnes i on hi ha una mescladissa d'objectes i codi sql no és una bona idea.

Jo vaig trobar Peewee cercant un orm senzill per a fer una importació de dades des d'un programa fet en PHP i Mysql a una aplicació desenvolupada amb Django y Postgresql.

Aquesta importació implicava obtenir les dades, manipular-les per a que encaixassin en el nou model i guardar-les a la base de dades. Peewee em va permetre fer això mantenint la llegibilitat del codi d'importació. D'aquesta manera és molt més senzill veure què està passant, què estàs fent malament. És molt més senzill treballar amb el camp User.username que fer referència a row[2].

Així doncs, si us trobau amb una situació semblant i necessitau quelcom senzill, bo d'aprendre i que faci la feina Peewee pot ser una bona elecció.

blog comments powered by Disqus