iro/model/utils.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 02 Mar 2012 13:46:13 +0100
branchdevel
changeset 210 3763babd5e10
parent 122 b55754aa4f96
child 259 5d9c24c2cb8d
child 260 4a03119a98c1
permissions -rw-r--r--
refactoring vRoute

from sqlalchemy.orm import sessionmaker

from .session import IroSession

class WithSession(object):
    '''a with statement for a database session connection'''
    def __init__(self, engine, autocommit=False):
        self.engine = engine
        self.autocommit=autocommit
    
    def __enter__(self):
        self.session = sessionmaker(bind=self.engine, class_ = IroSession)()
        return self.session
    
    def __exit__(self,exc_type, exc_value, traceback):
        if exc_type is None:
            if self.autocommit:
                self.session.commit()
        else:
            self.session.rollback()
        self.session.close()