sqlalchemy:Web.py中Sqlalchemy scoped_session的使用

  Sqlalchemy中, 创建Session是件比较耗资源事情.

  在Web环境中, 我们需要以种节省方式使用, SA提供了个对Session包装,scoped_session, 以确保能共享个Session.

  文档中并没有直接给出最佳实战.

  我做了google search后, 将代码改为:

#sqlalchemy
engine=create_engine('mysql://root:passwd@localhost/dbname',echo=True,pool_recycle=60)
#loading
defloadsa:
  session=scoped_session(sessionmaker(autoflush=True,bind=engine))
  web.ctx.sadbsession=session
  web.ctx.db=session
  
#unloading
defunloadsa:
  web.ctx.db.close
  web.ctx.sadbsession.remove
#processor
app.add_processor(web.loadhook(loadsa))
app.add_processor(web.unloadhook(unloadsa))


  在web里, 可以:

  db=web.ctx.db

  db.query(user).....

Tags:  session使用 scoped pythonsqlalchemy sqlalchemy

延伸阅读

最新评论

发表评论