Вашата връзка към документите на Psycopg2 донякъде го обяснява, нали?
Така че, освен ако не използвате различно ниво на изолация или използвате PgBouncer, първият ви пример трябва да работи добре. Въпреки това, ако желаете някакъв по-фин контрол върху това какво точно се случва по време на транзакция, тогава методът try/except може да е най-добрият, тъй като той е паралелен на самото състояние на транзакция в базата данни.