在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).....
最新评论