Clase derivada de objeto buffer

Oswaldo Hernández listas en soft-com.es
Mie Nov 4 11:27:36 CET 2009


Chema Cortes escribió:
> El Martes, 3 de Noviembre de 2009 21:25:17 Oswaldo Hernández escribió:
>> Chema Cortes escribió:
>>> El día 3 de noviembre de 2009 19:10, Oswaldo Hernández
>>>
>>> <listas en soft-com.es> escribió:
>>>> Utilizo la clase buffer para almacenar datos binarios, por ej, leo un
>>>> archivo (jpg, doc, pdf, ...) y lo almaceno en memoria en un objeto
>>>> buffer, luego lo guardo en otro archivo, o lo grabo en una base de
>>>> datos, ...
>>>>
>>>> El tema es que me interesaría agregarle algúnos métodos y propiedades.
>>>> Utilizo python 2.5
>>> "buffer" es una clase abstracta cuyo único uso es exponer el interface
>>> buffer. Si quieres una implementación de la clase buffer de donde
>>> derivar tu clase emplea 'str' (en python3 sería con la clase 'bytes').
>> Funciona :)
>>
>> Bueno, me ha dado un problemilla con la adaptacion str->bytea en
>>  PostgreSQL, pero ya lo he solucionado.
> 
> ;-)
> 
> 
> Si usas psycopg2 (DB-API), te ayudará bastante la función Binary() para 
> convertir los parámetros del .execute():
> 
> foto=open("foto.jpeg","rb").read()
> con.execute("insert into tabla (foto) values(%s)",(psycopg2.Binary(foto),))
> 

Eso es lo que utilizaba inicialmente, que es como se muestra en los ejemplos de psycopg2.

Pero después de observar que al realizar la lectura del campo guardado como psycopg2.Binary, era 
devuelto como tipo buffer, probé a utilizar buffer también para guardar los datos y comprobé que 
funciona.

También tenia el inconveniente de que psycopg2.Binary ya que no soporta __cmp__, por lo que la 
comparación de dos objetos de este tipo se realiza comparando los ids y siempre da False, aunque su 
contenido sea iguale.

En su momento consulté en la lista de psycopg2 sobre este hecho y la conveniencia de utilizar un 
tipo u otro y esta fué la respuesta:

<http://lists.initd.org/pipermail/psycopg/2009-August/006595.html>


Saludos,

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
_______________________________________________
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