Python e Postgres della P.I. 2006/02 - risolto
max@mail.studiomasson.it
massimo@mail.studiomasson.it
Lun 30 Gen 2006 00:10:46 CET
Per chi c'era ieri (ops! vista l'ora è già ieri l'altro...) alla seconda
Python Inquisition del 2006, volevo avvisarvi che ho risolto il problema
manifestatosi con Postgres.
Riassumo per altri eventuali interessati. Sabato pomeriggio ci siamo
trovati per estendere un modulo d'interfaccia verso i dbms, che sto
scrivendo, con l'obiettivo di aggiungere il supporto per Postgres.
Licia, Oriano ed Alberto mi hanno aiutato a configurare Postgres, quindi
insieme abbiamo studiato come collegarci a Postgres usando Python,
sfruttando il modulo Python PgSQL.
Si verificavano però diversi errori nelle operazioni, apparentemente
legati al mio codice piuttosto che alla connessione al dbms.
Oggi ho debuggato un po', ed ho trovato il busillis, nonchè una "specie"
di soluzione.
Il problema era semplicemente questo: il modulo PgSQL tratta in modo
particolare il .rowcount del cursore, non restituendo il numero reale di
righe lette ma -1 (che è il valore indicato dalle specifiche DBAPI 2.0
quando il cursor non è in grado di determinare il valore corretto. Vedi
anche http://pypgsql.sourceforge.net/pypgsql-faq.html#id2787127 ). Una
prima ipotesi appariva quella di "accrocchiare" una soluzione diversa
per conoscere il numero di record letti, ma non è la via che ho percorso.
La "soluzione" (tra virgolette perchè... più che una soluzione è una
diversa via!) è stata quella di non appoggiarmi al modulo PgSQL, ma a
"psycopg" ( http://initd.org/projects/psycopg1 ), che si comporta nel
modo corretto, e (onestamente, una volta cambiati i CHAR(1) in VARCHAR)
il tutto ha come per magia funzionato come avrebbe dovuto! Il problema
non era nel codice.
Così il busillis è stato risolto, entro la fine del week-end!
^_^
Devo dire che questi Python inquisition stanno producendo risultati
interessanti (a parte il freddo).
Ciao e buonanotte a tutti,
Max.
Maggiori informazioni sulla lista
blug