from contextlib import contextmanager import sqlite3 @contextmanager def transaction(path: str): conn = sqlite3.connect(path) try: yield conn conn.commit() except Exception: conn.rollback() raise finally: conn.close()