Viaggio al centro del database - Una favola da programmare con Python e MongoDB.

Ciao a tutti,
questa è la versione in italiano di questo post, che ho scritto per partecipare alla Blogging Challenge di MongoDB, solo che poi ci ho preso gusto e ne è uscita un'avventura a puntate e visto che ormai la storia l'ho scritta, tantovale che la riscrivo pure in italiano, così per vedere come suona.

Oggi voglio raccontarvi una storia e voglio anche insegnarvi qualcosa con un piccolo tutorial... E farò entrambe le cose contemporaneamente! Ecco infatti un piccolo esperimento che chiameremo "Tutorial-tale" (Tutorial-Racconto): racconti che nascondono un tutorial su qualcosa (o tutorial nascosti in un racconto, se preferite).
Visto che questo è il primo, sarà su uno dei miei argomenti preferiti: fare operazioni basilari sul mio database preferito (MongoDB) usando il mio linguaggio di programmazione preferito (Python).
In realtà, essendo un racconto ve lo potete leggere anche se non avete idea di cosa sia MongoDB o se non sapete programmare in Python, l'idea è appunto di farvi venire lo sfizio di saperne di più.




C'era una volta,
un eroe di nome User, che era perdutamente innamorato della Principessa del regno di DataLand. La Principessa ricambiava il suo amore, ma i due erano stati separati dal perfido zio della principessa: NoNo. Zio NoNo infatti era il principale esponente di un movimento che estremizzava al massimo l'idea di "non-relazionale" al punto che - fraintendendo quello che ciò significasse anche solo per i database - lo estendeva anche alle persone, proibendo le relazioni fra la gente, soprattutto quelle sentimentali!
Pertanto, Zio NoNo (la Principessa lo chiamava "Zio" apposta per farlo irritare, perchè sottolineava una relazione di parentela) non voleva che sua nipote sposasse User e quindi, dopo averla rapita, la nascose in un posto segreto.

User era disperato e decise di partire alla ricerca della sua amata col suo fedele compagno: un serpente magico di nome Py.

Nel regno di DataLand c'erano molti oracoli, chiamati database, che raccoglievano ogni tipo di sapere. Conoscendo la passione di Zio NoNo per i database non-relazionali, User era certo che avrebbe trovato informazioni su dove era nascosta la sua Principessa  all'interno del più famoso oracolo non-relazionale: MongoDB.

User sapeva che poteva interrogare l'oracolo MongoDB usando un "Gasteropodus Commandi Terminalis", una speciale conchiglia incantata che eseguiva particolari incantesimi. Ma Zio NoNo era furbo, raccolse tutte le conchiglie del regno e le distrusse, per evitare che la gente le utilizzasse per interrogare MongoDB.
Fortunatamente per User, il suo amico Py venne in suo aiuto: "Non preoccuparti mio caro amico, io parlo anche con i database e posso interrogare MongoDB al tuo posto. Ho ssssolo bisogno di un paio di artifatti e di un pezzo di carta su cui ssssscrivere tutti gli incantesimi in ssssequenza".
User era felice e confuso allo stesso tempo: "Quali artifatti e quali incantesimi?" chiese al serpente.
"Alcuni incantesssimi base chiamati "linee di codice", ho bisogno di lanciarli in ordine, per questo sssserve scriverli su un foglio (sono un serpente magico, quindi posso scrivere anche se non ho le mani). Ma non posso lanciare gli incantesimi più potenti e articolati da sssssolo, ho bisogno di alcuni artifatti, chiamati librerie, che contengono libri pieni di questi incantesimi."

Quindi Py prese una speciale conchiglia magica, che funzionava solo per i serpenti, e disse:
 
python -m pip install pymongo

Magicamente le librerie apparirono nelle mani di User. "Bene", disse Py, "ecco le prime linee di codice."
import pymongo
from pymongo import MongoClient
from bson.son import SON

"Ora, queste librerie faranno la parte più difficile del lavoro al posto nostro.." disse User "ma come facciamo a parlare con MongoDB?" "Dobbiamo connetterci a lui", disse Py, aggiungendo altre linee di codice:

client = MongoClient('localhost', 27017) 
"Creiamo un client, che è il modo in cui la gente come te, User, e me può comunicare con un database, non possiamo accedere direttamente perchè tutto quel ssssapere ci sssovraccaricherebbe e potrebbe danneggiare il database ssstesso. Visto che vogliamo parlare con MongoDB, il nostro client sssarà un MongoClient, ma per funzionare deve anche sapere l'indirizzo di MongoDB, così che possiamo interagire con l'oracolo corretto. Visto che sssappiamo che è nel nostro stesso regno (o macchina locale ;) ), diciamo che l'indirizzo è "localhost" e aggiungiamo anche il numero della porta, perchè in un regno potrebbero esserci diversi Oracoli/Database in funzione. Ora caro amico, di quali informazioni hai bisogno da MongoDB?"

"Beh, l'Oracolo contiene informazioni su tutti gli abitanti del regno. Io voglio sapere dove si trova la Principessa, quindi potrebbe essermi utile accedere all'elenco di tutte le posizioni registrate di tutte le persone." "Ok... e ssssia!" disse Py, scrivendo altre due linee di codice:

db = client['db_people_of_this_realm']
collection=db.positions

"Eccoci" disse il serpente. "Hai una collezione di documenti su tutte le posizioni di tutte le persssone in questo regno: come trovi la tua Principessa?"

Continua.... (solo in inglese per ora) nella parte 2!



Commenti