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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python