Jouez avec vos données : utilisez un ORM

Il y a quelques temps, je vous ai par­lé de base de don­nées, un super moyen pour struc­tu­rer vos don­nées.

Vous êtes main­te­nant j'en suis sûr, des pro­fes­sion­nels du SELECT, des JOIN et autres ALTER. C'est bien, très bien même, mais main­te­nant je vais vous apprendre à vous en pas­ser. Et oui, la ligne de com­mande c'est sym­pa pour des choses simples et/​ou rapides, mais dès que vous vou­lez plus de com­plexi­té, il devient dif­fi­cile de tra­vailler sans un lan­gage de plus haut niveau.

läskig-orm by henrik larsson
läs­kig-orm by hen­rik lars­son

Le but de cet article est de vous faire com­prendre la notion de Map­ping objet-rela­tion­nel (en anglais object-rela­tio­nal map­ping ou ORM) ou com­ment trans­po­ser votre base de don­nées en objets à uti­li­ser dans votre code. Ben voi­là, c'est fait, vous savez ce que c'est, juste un petit exemple pour enfon­cer le clou :

Dans mon pré­cé­dent billet, j'avais créé cette table :

 

et bien grâce à un ORM je vais pou­voir uti­li­ser un objet "Genes" avec les attri­buts : gene_​id, gene_​start, gene_​end et GCcontent direc­te­ment dans mon code !

Pour ceux qui sont per­dus et ne savent pas ce qu'est un objet en pro­gram­ma­tion, je vous redi­rige par ici. Pour les autres, je vais vous mon­trer com­ment faire pas à pas, en uti­li­sant le lan­gage Python car il me semble plus simple à appré­hen­der et à com­prendre pour le pro­fane (et j'adore ce lan­gage).

Installation des prérequis

Il vous faut Python bien sûr. Si vous ne savez pas si vous l'avez ins­tal­lé sur votre machine => par ici.
Une biblio­thèque qui va jouer le rôle de l'ORM :

pee­wee est donc une petite ORM qui vous per­met­tra de faire le pont entre des bases de don­nées et votre code Python. Celle-ci prend en charge des bases de don­nées de type SQLite, Post­gresS­QL ou encore MyS­QL. Oui je ne vous l'ai pas dit, mais un des béné­fices immé­diats que vous aurez à uti­li­ser une ORM, c'est que votre code sera adap­té, quel que soit le type de base de don­nées que vous uti­li­se­rez en backend, très très pra­tique.

Notez qu'il existe d'autres ORM, tel que SQLAl­che­my pour ne citer que cette biblio­thèque. Elle sup­porte beau­coup plus de types de bases de don­nées et a un sup­port plus éten­du, mais elle est plus "lourde" à ins­tal­ler. Pee­wee suf­fi­ra ample­ment pour des pro­jets qui ne dépas­se­ront pas les cen­taines d'utilisateurs jour­na­liers.

Préparation de l'ORM

Allez hop, on code main­te­nant. Vous pou­vez récu­pé­rer la base de don­nées dont je tire l'exemple si vous ne l'avez pas déjà.

On importe la biblio­thèque

On défi­nit son modèle et la base de don­nées à uti­li­ser :

On défi­nit la table "Genes", et comme nous l'avions fait en SQLite, je nomme les champs de ma table et je défi­nie leur type, rap­pe­lez-vous :

devient :

C’est fait !!! Pas plus dif­fi­cile que ça.

Utilisation

Voi­ci quelques exemples de requêtes que vous pour­riez faire :

Comp­ter tous les gènes :

Récu­pé­rer le GC content max et le moyen :

Com­bien de gènes ont un GCcontent > 60% et un nombre de paires de bases > à 1500 ?

Et si je n'en veux que 10 ?

Cela vous deman­de­ra un peu de pra­tique sui­vant l'ORM uti­li­sé, mais au final vous gagne­rez en effi­ca­ci­té si vous comp­tez tra­vailler plus sou­vent avec des bases de don­nées.
Notez que dans cet exemple, j'ai uti­li­sé la base de don­née mesgenes.db que j'avais déjà créée. Si vous par­tez de rien, la com­mande sui­vante

va créer la base de don­nées et la table pour vous.

Et si au contraire, vous avez déjà une base de don­nées exis­tante et êtes par­ti­san du moindre effort, vous pou­vez uti­li­ser pwiz, il géné­re­ra votre modèle pour vous (déjà ins­tal­lé par pee­wee). Par exemple, essayez :

J'ai mis tout ça dans un script Python (2.X) à lan­cer comme ceci :

(il faut que mesgenes.db se trouve dans le même réper­toire).

Voi­là !!

Un moyen simple et rapide pour uti­li­ser vos don­nées.

Mer­ci à Yoann, nal­lias, ZaZo0o et Nol­wenn pour leur relec­ture.



Pour continuer la lecture :


Commentaires

3 réponses à “Jouez avec vos données : utilisez un ORM”

  1. Avatar de Nisaea

    Mais c'est rigo­lo ce truc ! 🙂 Fau­dra que je teste à l'occase.

  2. Avatar de Yoann M.
    Yoann M.

    En plus d'être rigo­lo c'est juste trop bien, fini les prises de tête avec les requêtes SQL à se faire une entorse des neu­rones 🙂

  3. Avatar de alexandrin
    alexandrin

    Mais c'est super ça ! Je suis pas du tout à l'aise avec Python (pour l'instant) donc je vais res­ter sur les requêtes SQL (pour l'instant) mais ça m'a l'air tout à fait génial comme rac­cour­ci.

Laisser un commentaire