[Python] O non capisco sqlite, o non capisco sqlalchemy, o entrambi
Manlio Perillo
manlio.perillo a gmail.com
Mar 19 Nov 2013 17:55:06 CET
On 19/11/2013 17:30, Pietro Battiston wrote:
> [...]
>> oppure:
>> for row in r:
>> print row['id'], row['rel']
>
>
> Sì, questo mi è chiaro, ma a me piace più un
>
> print mio_ogg.id, mio_ogg.rel
>
La differenza tra
print row['id'], row['rel']
è solo di "facciata", specialmente se tieni conto che, in realtà, quello
che tu hai scritto è equivalente, in Python, a:
print mio_ogg.__dict__['id'], mio_ogg.__dict__['rel']
> ... a te no?! Perché se sto parlando di utenti e loro informazioni, di
> città e loro posizioni, e più in generale di oggetti e loro proprietà,
> dovrei scrivere di righe e loro elementi?!
>
Perchè è quello che realmente sono, visto che sono memorizzati in un
database relazionale.
E non si parla di righe e loro elementi, ma semplicemente di righe
(anche se il termine corretto sarebbe tupla).
Anche con l'ORM ti restituisce una lista di oggetti, no?
> [...]
> Appunto... e anche nei casi in cui (poniamo) non ho tabelle collegate,
> con l'ORM la classe me la definisco io,
Perchè, la tabella SQL no?
> posso aggiungerle dei metodi che
> mi servono,
Puoi anche definire funzioni libere, che operano sulla tuple (perchè
tanto in Python i metodi sono funzioni libere, alla fine).
> e farlo mano a mano che ne ho bisogno, posso definirla come
> subclass di qualcos'altro,
L'ORM offre alcuni pattern complessi per diverse situazioni.
Però, come ti ha detto Nicola, non è tutto "rose e fiori".
> posso tenere distinti più facilmente i
> refactoring che eventualmente dopo un po' io volessi fare al codice che
> lavora sugli oggetti e quelli che voglio fare alla struttura del
> database (magari tutto ciò lo posso fare in qualche modo anche senza
> l'ORM, ma l'ORM mi sembra lo strumento naturale, no?)...
>
Se devi fare refactoring, ci sono metodi ben noti a livello di SQL.
> ... poi ad un livello più di principio, per me l'ORM è ciò che permette
> di usare un database ragionando ad oggetti, e la cosa, a meno di
> controindicazioni che ancora mi sfuggono, mi piace.
>
E' attrattivo certamente.
Ma non bisogna abusarne; io ti ho avvertito poi sei libero di fare come
voi (ma il consiglio di imparare prima SQL resta, altrimenti se qualcosa
non funziona/è inefficiente avrai grosse difficoltà).
Ciao Manlio
Maggiori informazioni sulla lista
Python