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