iro/controller/database.py
branchdevel
changeset 92 f479738b4879
child 93 ee10253258ad
equal deleted inserted replaced
91:191c2c1d6e53 92:f479738b4879
       
     1 from sqlalchemy import create_engine
       
     2 from sqlalchemy.orm import sessionmaker
       
     3 from model import Base
       
     4 
       
     5 engine = create_engine('sqlite:///:memory:', echo=True)
       
     6 
       
     7 def createDatabase():
       
     8     Base.metadata.create_all(engine)
       
     9 
       
    10 Session = sessionmaker(bind=engine)
       
    11 
       
    12 class WithSession():
       
    13     def __init__(self,autocommit=False):
       
    14         self.autocommit=autocommit
       
    15 
       
    16     def __enter__(self):
       
    17         self.conn = engine.connect()
       
    18         self.session = Session(bind=self.conn)
       
    19         return self.session
       
    20     
       
    21     def __exit__(self,exc_type, exc_value, traceback):
       
    22         if exc_type is None:
       
    23             if self.autocommit:
       
    24                 self.session.commit()
       
    25         else:
       
    26             self.session.rollback()
       
    27         self.session.close()
       
    28         self.conn.close()
       
    29