title: scoped_session(sessionmaker()) or plain sessionmaker() in sqlalchemy?
body: <p>I am using SQlAlchemy in my web project. What should I use - <code>scoped_session(sessionmaker())</code> or plain <code>sessionmaker()</code> - and why? Or should I use something else? </p>
  
  <pre><code>## model.py
  from sqlalchemy import *
  from sqlalchemy.orm import *
  
  engine = create_engine('mysql://dbUser:dbPassword@dbServer:dbPort/dbName',
  pool_recycle=3600, echo=False)
  metadata = MetaData(engine)
  Session = scoped_session(sessionmaker())
  Session.configure(bind=engine)
  user = Table('user', metadata, autoload=True)
  
  class User(object):
  pass
  
  usermapper = mapper(User, user)
  
  ## some other python file called abc.py
  from models import *
  
  def getalluser():
     session = Session()  
     session.query(User).all()
     session.flush()
     session.close()
  
  ## onemore file defg.py
  from models import *
  
  def updateuser():
     session = Session()  
     session.query(User).filter(User.user_id == '4').update({User.user_lname: 'villkoo'})
     session.commit()
     session.flush()
     session.close()
  </code></pre>
  
  <p>I create a <code>session = Session()</code> object for each request and I close it. Am I doing the right thing or is there a better way to do it?</p>