Web.py中Sqlalchemy scoped_session的使用
2008-09-16 17:04
429 查看
Sqlalchemy中, 创建Session是一件比较耗资源的事情.在Web环境中, 我们需要以一种节省的方式使用, SA提供了一个对Session的包装, scoped_session, 以确保能共享一个Session.官方文档的描述 http://www.sqlalchemy.org/docs/05/session.html#unitofwork_contextual_creating 文档中并没有直接给出最佳实践.
我做了一点的google search后, 将代码改为:
#sqlalchemy
engine = create_engine('mysql://root:passwd@localhost/dbname', echo=True, pool_recycle = 60)
#loading
def loadsa():
session = scoped_session(sessionmaker(autoflush=True, bind=engine))
web.ctx.sadbsession = session
web.ctx.db = session()
#unloading
def unloadsa():
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).....
我做了一点的google search后, 将代码改为:
#sqlalchemy
engine = create_engine('mysql://root:passwd@localhost/dbname', echo=True, pool_recycle = 60)
#loading
def loadsa():
session = scoped_session(sessionmaker(autoflush=True, bind=engine))
web.ctx.sadbsession = session
web.ctx.db = session()
#unloading
def unloadsa():
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).....
相关文章推荐
- web.py 0.3 新手指南 - 在调试模式下使用session
- Python中web.py session使用,解决EOFError
- 使用mongodb来实现web.py的session
- web.py 的session 没法使用吗?
- web.py 0.3 新手指南 - 在template中使用session
- webpy中使用session
- web.py在SAE中的Session问题解决方法(使用mysql存储)
- web.py使用session.DiskStore存储session的时候报EOFError异常解决方案
- webpy中使用session
- webpy session debug 模式下无法使用
- sqlalchemy在web.py中的session使用
- web.py 0.3 新手指南 - 在子应用下使用session
- webpy使用笔记(二) session/sessionid的使用
- 解决web.py在SAE云中的Session使用问题
- web.py在SAE中的Session问题解决方法(使用mysql存储)
- web.py下session初始化异常问题
- Golang web 开发实战之 session 缓存:如何使用 redigo 将一个结构体数据保存到 redis?
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- mvc webapi+autofac + session 的使用
- web.py 0.3 新手指南 - 使用db.query进行高级数据库查询