| import sqlite3 |
| |
| con = sqlite3.connect(":memory:") |
| con.execute("create table lang (id integer primary key, name varchar unique)") |
| |
| # Successful, con.commit() is called automatically afterwards |
| with con: |
| con.execute("insert into lang(name) values (?)", ("Python",)) |
| |
| # con.rollback() is called after the with block finishes with an exception, the |
| # exception is still raised and must be caught |
| try: |
| with con: |
| con.execute("insert into lang(name) values (?)", ("Python",)) |
| except sqlite3.IntegrityError: |
| print("couldn't add Python twice") |
| |
| # Connection object used as context manager only commits or rollbacks transactions, |
| # so the connection object should be closed manually |
| con.close() |