我在我的网络项目中使用 SQlAlchemy。我应该用什么-scoped_session(sessionmaker())
或普通sessionmaker()
- 为什么?或者我应该使用其他东西?
## 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()
我创建一个session = Session()
每个请求的对象,然后我关闭它。我做的是正确的事还是有更好的方法?
正在阅读文档 http://www.sqlalchemy.org/docs/06/orm/session.html?highlight=scoped_session#unitofwork-contextual被推荐:
the scoped_session()
提供了一个函数,它生成一个线程管理的注册表Session
对象。它通常用于 Web 应用程序,以便可以使用单个全局变量来安全地表示具有本地化到单个线程的对象集的事务会话。
简而言之,使用scoped_session()
为了线程安全。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)