Итак, у меня есть контроллер, который отображает страницу. В контроллере я вызываю несколько функций из модели, которые создают свои собственные сеансы. Например:
def page(request):
userid = authenticated_userid(request)
user = User.get_by_id(userid)
things = User.get_things()
return {'user': user, 'things': things}
Где в модели у меня есть:
class User:
...
def get_by_id(self, userid):
return DBSession.query(User)...
def get_things(self):
return DBSession.query(Thing)...
Мой вопрос заключается в том, создает ли новый сеанс для каждой оптимальной функции, или я должен начать сеанс в контроллере и использовать один и тот же сеанс во всем контроллере (при условии, что я выполняю как запросы, так и вставку в базу данных в контроллер)? Ex.
def page(request):
session = DBSession()
userid = authenticated_userid(request)
user = User.get_by_id(userid, session)
things = User.get_things(session)
...
return {'user': user, 'things': things}
class User:
...
def get_by_id(self, userid, session=None):
if not session:
session = DBSession()
return session.query(User)...
def get_things(self, session=None):
if not session:
session = DBSession()
return session.query(Thing)...