On Mar 18, 2010, at 4:01, Daniel Garcia <d...@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

_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a