2010/10/25 Marco Fochesato <span dir="ltr"><<a href="mailto:marcofoc@libero.it">marcofoc@libero.it</a>></span><br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
try:<br>
cur.execute(update, (nuovo_valore, valore_statico))<br>
connDB.commit()<br>
except psycopg2.IntegrityError:<br></blockquote><div><br><br>Ti suggerisco un altro approccio. Fai una SELECT sulla tabella nazioni, e regolati di conseguenza. In questo modo funzionera' tutto a prescindere dalle librerie, e da come gestiscono le transazioni. Ci sara' BEGIN all'inizio, e COMMIT alla fine. Niente rollback e ri-begin etc.etc.<br>
<br>Quando scrivi codice misto python/sql, riserva le eccezioni di integrita' ai casi che tuo programma non ha previsto, e che provvederai a gestire come bug. In questi casi, ci sara' BEGIN all'inizio, ROLLBACK alla fine, errore a schermo o per email, fine.<br>
<br>Grace Hopper disse "it's easier to ask forgiveness than it is to get permission".. ma ha inventato il COBOL, e in SQL le best practice sono altre :)<br><br><br></div></div>