Din länk till Psycopg2-dokumenten typ förklarar det själv, eller hur?
Så om du inte använder en annan isoleringsnivå, eller använder PgBouncer, bör ditt första exempel fungera bra. Men om du vill ha lite mer detaljerad kontroll över exakt vad som händer under en transaktion, kan försök/except-metoden vara bäst, eftersom den är parallell med själva databastransaktionens tillstånd.