[Python] psycopg2 e bytea

Daniele Varrazzo piro a develer.com
Mar 15 Feb 2011 15:51:33 CET


On Tue, 15 Feb 2011 15:36:03 +0100, Stefano Dal Pra <s.dalpra a gmail.com>
wrote:
> saluti, sto tentando di inserire un valore bytea in una tabella di un db
> postgres 8.4.7
> usando psycopg2 2.2.1-1 (Python 2.6.6) e ottengo un errore. Se qualcuno
ha
> lumi mi puo' suggerire
> il suo parere?
> 
> Descrivo il problema:
> 
> # carico un'immagine
>>>> mypic=open('/home/sdp/testpic.png','r').read()
> 
> # provo a inserirla con psycopg2
>>>> q.curs.execute("insert into blobs (name,file) values (%s,%s)",('UN
nome
> a caso',mypic,))

Psycopg fa una conversione in base al tipo in Python. Le stringhe vengono
convertite come testo, non come binary. Credo che in Python 2.6 l'unico
tipo convertito in binario sia buffer.

Ma probabilmente la soluzione pių semplice č quella di usare
psycopg2.Binary(mypic). Prova::

    q.curs.execute(
        "insert into blobs (name,file) values (%s,%s)",
        ('UN nome a caso', psycopg2.Binary(mypic),))

Noto _senza_ piacere che la soluzione pių semplice non č documentata...
provvedo subito.

Ciao!

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com


Maggiori informazioni sulla lista Python