On Tue, 15 Feb 2011 15:36:03 +0100, Stefano Dal Pra <s.dal...@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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a