[Python] [Python e PostgreSQL] All'interno delle eccezioni, le transazioni si comportano diversamente?

Marco Fochesato marcofoc a libero.it
Lun 25 Ott 2010 00:00:34 CEST


> Grazie per la versione. Vorrei vedere un pezzetto di codice con le
> operazioni che svolgi: la query, l'eccezione, la query *nell'*eccezione...

update = "UPDATE clienti.nazioni SET "+etichetta+"=%s WHERE
"+etichetta2"=%s;"

try:
	cur.execute(update, (nuovo_valore, valore_statico))
        connDB.commit()
except psycopg2.IntegrityError:          
        connDB = psycopg2.connect(connessione)
        cur = connDB.cursor()
        update1 = "UPDATE clienti.anagrafica_clienti SET nazione=%s
WHERE nazione=%s;"
        estrai = "SELECT idnazione FROM clienti.nazioni WHERE
nome_nazione = %s;"
       cur.execute(estrai, (nome_nazione,))
       id_nazione_vecchio = cur.fetchone()
       id_nazione_vecchio = id_nazione_vecchio[0]
       cur.execute(update1, (nuovo_valore, id_nazione_vecchio,))
       update2 = "UPDATE clienti.nazioni SET "+etichetta+"=%s WHERE
"+etichetta2+"=%s;"
       cur.execute(update2, (nuovo_valore, valore_statico))
       connDB.commit()	
       cur.close()
       connDB.close()            

Non ho mai postato del codice.. spero non si dovesse far in altra
maniera.
Le varie variabili, sono state dichiarate prima.. ma credo vadano bene
tutte. Il problema è proprio nel primo update. Mi dà errore perchè
cambio ina idnazione non ancora presente nella tabella nazioni..

Notte.
Marco



Maggiori informazioni sulla lista Python