[Python-es] ORM de django vs SQLAlchemy

Jose Caballero jcaballero.hep en gmail.com
Jue Mar 18 23:00:47 CET 2010


On Mar 18, 2010, at 4:01, Daniel Garcia <dani en danigm.net> wrote:

> El jue, 18-03-2010 a las 04:06 +0100, Chema Cortes escribió:
>> On 17/03/10 23:21, Jose Caballero wrote:
>>> En mi caso concreto son bases de datos Oracle. Las tablas ya estan
>>> creadas, y los esquemas son fijos. Lo que necesito es hacer muchas
>>> consultas solo-lectura a esas DB, procesar el resultado (hacer
>>> graficos y esas cosas) y, de vez en cuando, modificar el contenido  
>>> de
>>> una de las tablas. El tamagno de las tablas a leer es del orden de  
>>> 10
>>> millones de entradas por tabla.
>>
>> Una diferencia fundamental entre django ORM y Alchemy cuando usas  
>> bases
>> de datos ya creadas (databases "legacy") es que la introspección de
>> django se limita a crear un modelo nuevo a partir del que tienes,  
>> pero
>> no siempre es posible usar la tablas originales sin modificación.  
>> Por
>> contra, Alchemy ofrece muchas más posibilidades de mapear cualquier
>> tabla, vista o query a una clase, sin alteración del modelo origin 
>> al.
>>
>> Yo tuve un problema similar, donde django no funcionaba a no ser que
>> modificara mis tablas originales de oracle. Por simpleza, terminé
>> construyendo un nuevo modelo de datos ajustado a las necesidades de
>> django donde pasaba puntualmente los datos que necesitaba en cada
>> momento. En tu caso no parece que sea lo recomendable, por lo que o  
>> bien
>> utiliza alchemy o bien extrae los datos sin pasar por un ORM (que  
>> no es
>> obligado).
>
> Además sqlalchemy tiene una cosa muy chula que es el sqlsoup [1] con 
>  el
> que puedes acceder a las tablas como si hubieras creado los modelos  
> pero
> sin tener que hacerlo. Osea, si ya tienes la base de datos creada,
> utilizas sqlsoup y no tendrás que declarar las clases con todas las
> columnas y sus tipos. En mi blog tengo un ejemplo [2]
>
> [1] http://www.sqlalchemy.org/trac/wiki/SqlSoup
> [2] http://danigm.net/node/92



Muchas gracias a todos por vuestros comentarios.

Saludos,
Jose




Más información sobre la lista de distribución Python-es