On Wed, May 31, 2017 at 12:12 AM, Ian Kelly <ian.g.ke...@gmail.com> wrote: > On Tue, May 30, 2017 at 7:29 AM, Skip Montanaro > <skip.montan...@gmail.com> wrote: >> Assuming the underlying database supports transactions, is there any >> difference between calling the commit() method on the connection and >> calling the execute method on the cursor with the "commit transaction" >> statement? It seems a bit asymmetric to me to start a transaction with >> >> cur.execute("begin transaction") >> >> but end it with >> >> conn.commit() > > There's no difference I'm aware of in the implementations I've used, > but having a consistent API does allow for constructions such as: > > try: > do_stuff(conn) > except: > conn.rollback() > finally: > conn.commit() > > without having to worry about variations in syntax between databases.
I prefer: with conn, conn.cursor() as cur: do_stuff(cur) Not sure how many connectors that works with, but it's the best way to use psycopg2. ChrisA -- https://mail.python.org/mailman/listinfo/python-list