[Python] O non capisco sqlite, o non capisco sqlalchemy, o entrambi
Manlio Perillo
manlio.perillo a gmail.com
Mar 19 Nov 2013 16:10:05 CET
On 19/11/2013 11:01, Pietro Battiston wrote:
> [...]
> A parte gli scherzi: non dico che l'ORM di SQLAlchemy sia _semplice_, ma
> non l'ho mai trovato tanto più complesso di quanto lo fossero le mie
> esigenze.
>
>> Un ultimo consiglio è di non usare l'ORM a meno di non aver bisogno
>> veramente delle sue funzionalità (ossia in quei casi in cui dovresti
>> reimplementarti le query non banali a mano); non è questo il tuo caso,
>> quindi usa sqlalchemy.schema e sqlalchemy.sql, che è comunque conveniente.
>>
>
> OK, OK, uso l'ORM perché non conosco SQL... ma _anche_ perché mi fa
> risparmiare parecchio codice, e perché preferisco passare istanze che
> id/righe... non è una motivazione molto pythonica?!
>
Che intendi?
> Per quello ne ho capito io, _la_ funzionalità dell'ORM è mappare righe
> in oggetti... e non riesco a pensare ad un caso in cui _non_ ne abbia
> "bisogno veramente".
>
Non hai bisogno di mappare tuple (nel senso usato in algebra
relazionale) in oggetti.
L'oggetto che SQLAlchemy ti restituisce dopo una query è perfettamente
usabile:
r = sql.select([my_table], where=[...]).fetchall()
for row in r:
for col in row:
print col
oppure:
for row in r:
print row['id'], row['rel']
Con l'ORM hai il vantaggio che ti "aggrega" le tuple delle tabelle
"collegate", a seconda del tipo di relazione usata. Nell'esempio fatto
prima row['rel'] sarà l'id della colonna collegata se usi sqlalchemy
core; con l'ORM sarà un dict-like contenente tutti i dati, oppure una
sequenza di dict-like nel caso di relazioni uno a molti.
Ciao Manlio
Maggiori informazioni sulla lista
Python