[Python] psycopg2 e bytea
Stefano Dal Pra
s.dalpra a gmail.com
Mar 15 Feb 2011 15:59:58 CET
2011/2/15 Daniele Varrazzo <piro a develer.com>
> 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),))
>
Provato, funziona:
docetest=> select md5(file) from blobs;
md5
----------------------------------
771f5d3c3b264842d584bd7dfc42b2ab
(1 riga)
>>> gu=hashlib.md5(mypic)
>>> gu.hexdigest()
'771f5d3c3b264842d584bd7dfc42b2ab'
quindi nel db c'e' effettivamente lo stesso dato che ho inserito (meglio
controllare: non si sa mail...)
Grazie mille! Risposta e soluzione i 5 min!
Stefano
>
> 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 a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20110215/a4bccf3f/attachment.html>
Maggiori informazioni sulla lista
Python