On Mon, 2010-10-25 at 22:17 +0200, Marco Fochesato wrote: > Testato, passa anche da me nel mio database. > Ma ci voglio capire qualcosa di più.... > Ciao intanto.
Allora, siccome l'esempio di Daniele non riproduceva il mio errore.. ho cambiato il programmino generando il MIO errore, quello della foreign key.. mi dà errore anche fuori dall'eccezione. Ho provato a lanciare gli execute senza il try.. E' evidente che sbaglio qualcosa io.. qualcosa di tremendamente banale.. lo posto comunque (ps: devo ancora andare a vedere i consigli di Giovanni e Daniele, ho voluto solo approfondire l'esempio): import psycopg2 def test(dsn): """test if a connection created in an exception handler goes autocommit""" cnn = psycopg2.connect(dsn) cur = cnn.cursor() cur.execute("""drop table if exists clienti;""") cur.execute("""drop table if exists nazioni;""") cur.execute("""create table nazioni (idnazione int primary key); insert into nazioni values (1);""") cur.execute("""CREATE TABLE clienti ( nazione integer primary key, CONSTRAINT clienti_nazione_fkey FOREIGN KEY (nazione) REFERENCES nazioni (idnazione) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) WITH ( OIDS=FALSE ); insert into clienti values (1);""") cnn.commit() # make an error try: cur.execute("""update nazioni set idnazione = 2 WHERE idnazione = 1""") except psycopg2.IntegrityError: # connection created in the handler cnn2 = psycopg2.connect(dsn) cur2 = cnn2.cursor() cur2.execute("""update clienti set nazione = 2 where nazione = 1""") cur2.execute("""update nazioni set idnazione = 2 WHERE idnazione = 1""") cnn2.commit() test("dbname=test") _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python