cambiar el contenido de una variable en SQLAlchemy

Jose Caballero jcaballero.hep en gmail.com
Mar Ago 5 01:53:20 CEST 2008


>
> Parece que SA no te deja hacer eso con las filas pues... puedes probar a
> envolverlas:
>
> class Envoltorio(object):
>    def __init__(self, fila):
>        self.__dict__.update(**dict(fila))
>
> filas = map(Envoltorio, filas)
> for fila filas:
>    # Ahora sí que puedes modificar los atributos...
>
> Aunque yo dejaría que el ORM de SA haga el trabajo sucio que para eso está:
>
> en algún sitio, a nivel de módulo:
>
> from sqlalchemy.orm import create_session, mapper
> class UnaClase(object):
>    @property
>    def fecha_formateada(self):
>        return self.fecha.strftime(...)
>    # etc...
> mapper(UnaClase, tabla)
>
> luego dentro del view:
>
> session = create_session()
> objetos = session.query(UnaClase).all()
> # la lista "objetos" ya la puedes modificar si quieres y luego mandarla
> a la plantilla
>
>
Creo que voy a tener que hacer algo como lo que recomiendas. Porque ahora
tengo otro problema.
No trabajo con una única lista (resultado de hacer un cierto "query"), sino
con dos listas (resultado de dos "queries" a dos tablas distintas, en dos
bases de datos diferentes, pero con el mismo "schema").

Tras obtener ambas listas, con sendos métodos fetchall(), juntos las dos
listas en una y trabajo con la lista resultante.

Ahora me interesa ordenar esa lista según ciertos campos y un determinado
criterio. No me vale hacerlo en el "query", porque eso me daría dos medias
listas ordenadas, pero no la lista total. Por lo que creo que lo mejor es
añadir un método __cmp__(), y para eso creo que lo mejor es trabajar con mi
propia clase 'envolvente'.

Pero si alguien tiene un idea mejor para poder ordenar la lista, soy todo
oídos (teniendo en cuenta que yo estoy añadiendo 'a mano' campos que no
están en el __dict__ original).


Muchas gracias.
Saludos,
Jose
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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