WEB开发网
开发学院软件开发Python Web.py中Sqlalchemy scoped_session的使用 阅读

Web.py中Sqlalchemy scoped_session的使用

 2008-11-10 13:22:44 来源:WEB开发网   
核心提示:Sqlalchemy中, 创建Session是一件比较耗资源的事情.在Web环境中, 我们需要以一种节省的方式使用, SA提供了一个对Session的包装,scoped_session, 以确保能共享一个Session.文档中并没有直接给出最佳实践.我做了一点的google search后, 将代码改为:#sqlalc

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:Web py Sqlalchemy

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接