Are transactions in PostgreSQL via `psycopg2` per-cursor or per-connection?
Transactions are per-session, i.e. per-connection.
PostgreSQL doesn't support suspending and resuming transactions, so psycopg2 couldn't make them per-cursor unless it implicitly created new connections behind the scenes.
In practice I don't find psycopg2's cursors particularly useful. They can retain result sets if you're not using incremental fetch from the server, but I don't find them good for much else.
Why manually issue begin
and commit
though, rather than using the connection methods for them?