Guardar y recuperar imagen desde Postgres

Alberto Valverde alberto en toscat.net
Jue Ene 24 14:31:15 CET 2008


> Gracias Alberto, eso es bueno, muy bueno... Tal vez tengas idea de como
> hacer lo mismo sin atarme a ningun framework web? Podria ser que mi
> controlador extienda de alguna clase como por ejemplo la
> BaseHTTPRequestHandler o alguna de BaseHTTPServer, por decir algo. En
> realidad no conozco mucho, pero cuento con la ayuda de un gran compañero
> de
> trabajo que me guia de a poco.

En mi opinión trabajar directamente con BaseHTTPServer es demasiado bajo
nivel, no le veo mucha utilidad a menos que lo que te interese sea
aprender sobre el protocolo HTTP en sí.

Sin salirte de la librería estándar, si usas python 2.5, podrías escribir
la aplciación siguiendo el protocol WSGI (google te puede dar toda la
información que desses) con la ventaja de que ésta la podrás servir con
cualquier servidor que soporte en estándar (mod_wsgi para apache,
cherrypy, etc...) o con multitud de adaptadores para fast_cgi, e incluso
cgi. Lo mismo que he escrito "en WSGI" sería algo así:

from wsgiref.simple_server import make_server

def application(environ, start_response):
    obj = session.query(ObjetoGrande).get(id_imagen)
    start_resonse("200 OK", [('Content-Type', 'image/jpeg')])
    return [obj.data]

if __name__ == '__main__':
    server = make_server('', 8000, application)
    server.serve_forever()

>
> Tal vez vos o alguien podria podria recomendarme alguno de esos frameworks
> que nombras? Ventajas y desventajas? Me conviene jugarme por uno y
> depender
> directamente de alguno de ellos, o sera mejor seguir desarrollando sin
> jugarme por alguno?

Te conviene jugarte por uno, WSGI/HTTP "a pelo" es para masoquistas ;)
WSGI no es un API para hacer aplicaciones web, más bien un interfaz para
que frameworks se cominiquen con un servidor web. Si sigues ésta ruta al
menos utiliza alguna librería como WebOb para hacer WSGI  más amigable.
Por ejemplo, en http://pylonshq.com/pasties/575 tienes una "receta" de
como te podrías montar tu propio framework con Web y Routes (para resolver
urls). La receta usa el servidor WSGI de CherryPy pero facilmente lo
puedes susitituir por el de la librería estandar (en wsgiref)

La ventaja de un framework es que el hacer una aplicación web es un camino
muy trillado y hay mucho escrito para resolver problemas comunes
(sesiones, concurrencia, acceso a BDD, plantillas HTML, autentificación) y
te permite concentrarte en el problema que la aplicación debe resolver.

Si vas a usar SQLAlchemy y eres novatillo te recomiendo Turbogears (ojo,
soy uno de los desarrolladores) porque es más bastante sencilla de
utilizar y está bien integrado con SA. Si ya tienes experiencia te
recomiendo Pylons ya que es la más flexible a la hora de adaptarla a lo
que vayas a usar. Si no estás muy ligado a SQLAlchemy también te puede
interesar Django que tiene muy buena documentación y es la que más
usuarios tiene (es decir, ayuda a puñados varias listas de correo, foros y
en varios idiomas).

Yo personalmente uso Pylons, SQLAlchemy y Mako o Genshi para plantillas.

Alberto

_______________________________________________
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