cambiar el contenido de una variable en SQLAlchemy

Jose Caballero jcaballero.hep en gmail.com
Lun Ago 4 20:44:13 CEST 2008


Muchas gracias de nuevo.

Y si no se entendió bien la pregunta es porque no estaba bien formulada. Una
pregunta bien formulada siempre se entiende. Es decir, fue culpa mía y pido
disculpas por ello.

Lo que me propones tiene buena pinta. Y es ese tipo de cosas lo que estoy
probando.
De momento lo he arreglado (como solución temporal) haciendo algo como esto:

 for entry in lista:
          entry.new_MyField1 = funcion_cambia_formato(entry.MyField1)

y en el template HTML he cambiado MyField1 por new_MyField1. Funciona, pero
es horrible.


Muchas gracias por tu ayuda, paciencia y tiempo.

Saludos,
Jose



El 4 de agosto de 2008 14:35, Alberto Valverde<alberto en toscat.net>escribió:

> Jose Caballero wrote:
> >
> > Si entiendo correctamente lo que leo en ese link, lo que hace insert() es
> > cambiar el contenido de la base de datos.
> > ¿Es eso, o no lo he entendido bien?
> >
> Sí lo modifica, perdona, he interpretado mal tu pregunta, pensaba que
> era lo que querías.
> > Porque no estoy interesado en eso. Sencillamente, quiero cambiar el
> output
> > para un campo. Por ejemplo, imaginemos que una de las filas  en la tabla
> de
> > mi DB es una fecha, pero yo quiero visualizar en mi web esa fecha con un
> > formato diferente. O quiero cambiar algunos símbolos raros por espacios
> en
> > blanco, y cosas por el estilo.
> > No quiero cambiar lo que hay en la base de datos. Sólo el contenido que
> me
> > devuelve antes de pasarlo al HTML.
> >
> 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
>
> Recuerda *no* llamar nunca a session.flush() o session.commit() sino SA
> escribirá los cambios en la BDD, a menos que sea lo que quieras, claro
>
> Por cierto, he encontrado el tutorial ORM de la 0.3 donde te explica
> mejor todo ésto:
> http://www.sqlalchemy.org/docs/03/tutorial.html#tutorial_orm
>
> Alberto
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
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