чем разница между использованием scoped_session
явным образом:Разница между SQLAlchemy scoped_session (..) и scoped_session (..)()
engine = create_engine(url)
session = scoped_session(sessionmaker(bind=engine))
session.add(..)
session.commit()
session.remove()
session.add(..)
session.commit()
session.remove()
и создание экземпляра объекта scoped_session
:
engine = create_engine(url)
session = scoped_session(sessionmaker(bind=engine))
session().add(..)
session().commit()
session.remove()
session().add(..)
session().commit()
session.remove()
Sqlachemy всегда возвращают один и тот же сеанс для одного и того же потока, вызывая session()
:
>> session() is session()
True
>> session is session()
False
Является ли это подходящим способом управления соединением в многопоточной среде? Если да, то почему sqlalchemy позволяет запрашивать с использованием session
вместо session()
?
Осторожно с терминологией. Генератор в Python - это очень специфическая вещь; «фабрика» - это то, о чем вы говорите. – univerio
"" scoped_session "возвращает объект-генератор, поэтому вы должны вызвать генератор для возврата экземпляра" - лучшая часть - это то, что мне не нужно, потому что оба работают: 'Session.commit()' и 'Session(). совершить() '. И вопрос в том, в чем разница? Может быть, 'Session(). Commit()' работает в многопотоке, а 'Session.commit()' нет? – User
Обновлен мой ответ. В принципе, завод автоматически вернет правильную локальную сессию потока. Я нахожу эту функцию неясной, но для каждой своей. – ApolloFortyNine