On Sun, 24 Oct 2010 15:03:15 +0200, Marco Fochesato <marco...@libero.it> wrote: > Buongiorno a tutti! > Uso Python per creare piccole applicazioni, che si collegano ad una base > dati PostgreSql attraverso il driver psycopg.
Bravo :) io sono uno dei maintainer di psycopg. > Per la prima volta mi son trovato a dover operare una transazione (un > update su due cartelle), all'interno di un except. Due cartelle? Intendi due tabelle? > 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. > Intanto, ho dovuto aprire nuovamente la connessione, anche se era già > aperta prima del sollevamento dell'except... ma la cosa peggiore è che > sembra che le istruzioni vengano eseguite immediatamente sul database, > senza attendere il mio commit() finale... è possibile? 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). > 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? Grazie, a presto. -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python