Váš odkaz na dokumenty Psycopg2 tak trochu to vysvětluje samo, ne?
Pokud tedy nepoužíváte jinou úroveň izolace nebo nepoužíváte PgBouncer, váš první příklad by měl fungovat dobře. Pokud však požadujete jemnější kontrolu nad tím, co se přesně děje během transakce, pak může být nejlepší metoda try/except, protože je paralelní se samotným stavem databázové transakce.