On Sun, 2010-10-24 at 16:47 +0200, Daniele Varrazzo wrote:

> Bravo :) io sono uno dei maintainer di psycopg.
Bene!! Spero che lo manterrai a lungo!!

> Due cartelle? Intendi due tabelle?
Si scusa.. due TABELLE.. che pirla.
> 
> > Mi sembra che la connessione si comporti diversamente che all'interno
> > del normale codice.
> Non dovrebbe. Ma magari c'e' uno strano path nella libreria in cui
> l'eccezione viene gestita male.
> 
boh??

> Mai visto niente del genere. L'eccezione viene generata da un errore nel
> database? Se è coì la connessione è in stato di errore, ma non serve
> crearne una nuova: basterebbe un rollback. Quello che segnali (autocommit)
> sembra un disallineamento tra lo stato dell'oggetto connessione e la
> connessione stessa, che non mi è mai capitato di vedere (ma che potrebbe
> essere effettivamente un bug).
Si, l'eccezione è generata da un errore nel database: 
except psycopg2.IntegrityError: 
quindi dovrei lanciare un rollback per recuperare l'integrità della
connessione?
> 
> > Ho bisogno di fare entrambi gli update prima di chiudere la
> > transazione.. 
> > sbaglio qualcosa?
> 
> Non hai dato molti dettagli: mi piacerebbe capire meglio cosa succede.
> Puoi scrivere un esempio auto-contenuto di quello che descrivi e che
> versione di psycopg usi?
ehmm... perdonami.. che vuol dir auto-contenuto?
la versione di psycopg che uso? quella che trovo nelle repository di
ubuntu, che è precisamente la 2.0.13-2ubuntu2

Ecco i dettagli:
ho ste due tabelle:
nazioni, con le colonne "id_nazione" e "nome_nazione"
clienti, con fra le colonne la colonna "nazione" che è referenziata alla
colonna "id_nazione"

con il mio programmino voglio dare la possibilità all'utente di variare
il nome_nazione in archivio e... se vuole.. anche l'id_nazione.
L'eccezione viene sollevata quando viene cambiato un id_nazione già
usato nella tabella clienti.. 
io volevo a sto punto proseguire nell'eccezione, facendo un update sulla
tabella clienti e un update sulla tabella nazioni, e poi dare il
commit.. evitando così di generare errori di database.

Grazie Daniele.

Ps: sei tu che mi hai iniziato eh.. ho ancora qui su carta una tua mail
dove mi spiegavi in velocità la connessione, il cursore, etc.. son
andato un po' avanti..


_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a