1 import sqlite3 2 3 con = sqlite3.connect(":memory:") 4 con.execute("create table person (id integer primary key, firstname varchar unique)") 5 6 # Successful, con.commit() is called automatically afterwards 7 with con: 8 con.execute("insert into person(firstname) values (?)", ("Joe",)) 9 10 # con.rollback() is called after the with block finishes with an exception, the 11 # exception is still raised and must be caught 12 try: 13 with con: 14 con.execute("insert into person(firstname) values (?)", ("Joe",)) 15 except sqlite3.IntegrityError: 16 print "couldn't add Joe twice" 17