Dit link til Psycopg2-dokumenterne på en måde forklarer det sig selv, ikke?
Så medmindre du bruger et andet isolationsniveau eller bruger PgBouncer, burde dit første eksempel fungere fint. Men hvis du ønsker en mere detaljeret kontrol over præcis, hvad der sker under en transaktion, så kan prøve/undtagen-metoden være bedst, da den er parallel med selve databasetransaktionstilstanden.