### another way (but again *not the only way*) to do it ### from contextlib import contextmanager @contextmanager def session_scope(): """Provide a transactional scope around a series of operations.""" session = Session() try: yield session session.commit() except: session.rollback() raise finally: session.close() #all session.add will be done in session_scope(). tbd: remove individual commits from ORM_test.py def run_my_program(): with session_scope() as session: pass #ThingOne().go(session) #ThingTwo().go(session)