[Python-es] ORM de django vs SQLAlchemy

Daniel Garcia dani en danigm.net
Jue Mar 18 09:01:28 CET 2010


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 original.
> 
> 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
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: Esto es una parte de mensaje firmado digitalmente
URL: <http://mail.python.org/pipermail/python-es/attachments/20100318/445280f3/attachment.pgp>


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