Manejo de imagenes

Chema Cortés py en ch3m4.org
Vie Ene 27 02:01:50 CET 2006


El Lunes, 23 de Enero de 2006 19:48, Roberto Perdomo escribió:

>   Estoy comenzando a desarrollar con python (aplicaciones web), vengo de
>   PHP, decepcionado por las fallas de seguridad que tiene y lo rayado que
>   se esta poniendo y me encuentro desarrollando un sistema de asistencia
>   de personal para una intranet y aun no logro consolidar algunos
>   conocimientos aun para comenzar con python.
>
>   Tengo Apache y el mod_python baja un sarge, voy a utilizar postgresql y
>   no se como subir una foto a la base de datos, y aun mucho menos
>   consultarla y visualizarla en el navegador.
>
>   Se que tengo que tener un campo tipo Blob (segun Mysql) en el cual sera
>   almacenado el archivo, pero no tengo ni idea de como convertir la imagen
>   al tipo de datos en la base de datos, una vez encontre una funcion de
>   php llamada img2sql, pero no halle la manera de hacerla funcionar.

Aquí hay varias preguntas:

En postgresql el tipo equivalente a Blob es 'bytea' (sólo se diferencia del 
estándar en el modo de codificar en binario). Para introducir una imagen en 
postgresql desde python puede servirte el código que puse en mi blog:

http://ch3m4.org/blog/index.php/py/2005/01/24/manejo_de_blobs_con_postgresql

Con ésto sabrás cómo introducir y recuperar una imagen en postgresql. Como 
vienes de PHP, supongo que estás usando el PSP de mod_python, y que sabes 
html para indicar cómo subir una imagen. En PSP quedaría así:

 
<form action="/py/upload_form" enctype="multipart/form-data" method="post">
  <input type="file" name="filedata" />
  <input type="submit" value="Enviar" name="upload" />
</form>



En upload_form.py puedes acceder al contenido del fichero con form["filedata"]

Para mostrar la imagen en una página, es del mismo modo que en PHP, mediante 
la etiqueta html <img src="mifichero.py" ... Aunque también puedes enviar una 
imagen que hayas generado al vuelo mediante la función req.sendfile()


>   Adicionalmente tengo ya elaborado un acceso restringido por IP a la
>   pagina principal del sistema pero esat elaborada con PHP y me gustaria
>   portarla a python (asi tendre un sistema uniforme, sin esa reguera de
>   lenguajes d programacion). La validacion la hice consultando la base de
>   datos y leyendo al IP del cliente con la funcion de PHP
>   "$_SERVER['REMOTE_ADDR']", pero ahora con python no tengo ni idea.
>
>   He leido que con socket.hostname, mas no entiendo mucho.

req.connection.remote_ip


Apunta éste artículo:

http://www.onlamp.com/pub/a/python/2004/02/26/python_server_pages.html


>   Y una ultima pregunta, elSqlObject es para facilitar las operaciones con
>   el SQL hacia la base de datos no? alguien tendra ejemplos de ello?

El SQLObject mapea la funcionalidad de una base de datos relacional en 
relaciones entre objetos. No diría que facilita el manejo del SQL; más bien 
lo suplanta. Digamos que lo que facilita es la creación de un modelo de datos 
sin tener que preocuparte de crear sentencias SQL ni tener que tener en 
cuenta las peculiaridades de cada gestor de base de datos soportado.

La desventaja obvia es que pierdes toda la riqueza de sentencias SQL que te 
ofrece un buen gestor como es postgresql (aislar transacciones, bloqueos, 
dominios, tipos definidos, procedimientos almacenados, triggers, etc).




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