Просто быстрый вопрос: SQLAlchemy говорит о, вызывающем sessionmaker()
один раз, но вызывающий результирующий класс Session()
каждый раз, когда вам нужно поговорить с вашей БД. Для меня это означает, что второй я бы сделал свой первый session.add(x)
или что-то подобное, я бы сначала сделал
from project import Session
session = Session()
То, что я делал до сих пор, заключалось в том, чтобы сделать вызов session = Session()
в моей модели один раз, а затем всегда импортировать один и тот же сеанс в любом месте приложения. Поскольку это веб-приложения, это обычно означает одно и то же (как одно представление выполняется).
Но где разница? В чем заключается недостаток использования одного сеанса все время от его использования для моего материала базы данных до тех пор, пока моя функция не будет выполнена, а затем создадим новую в следующий раз, когда я захочу поговорить с моей БД?
Я получаю, что если я использую несколько потоков, каждый должен получить свой собственный сеанс. Но используя scoped_session()
, я уже убедился, что проблема не существует, не так ли?
Просьба пояснить, являются ли какие-либо из моих допущений неправильными.