Twój link do dokumentów Psycopg2 wyjaśnia to samo, nie?
Tak więc, chyba że używasz innego poziomu izolacji lub używasz PgBouncer, twój pierwszy przykład powinien działać poprawnie. Jeśli jednak chcesz mieć bardziej szczegółową kontrolę nad tym, co dzieje się podczas transakcji, najlepsza może być metoda try/except, ponieważ jest ona równoległa do samego stanu transakcji bazy danych.