import sqlalchemy
from sqlalchemy.orm import sessionmaker, scoped_session
connection = "mysql://root:@localhost/mydatabase"
# pool_size - указывает сколько запросов хранить в очереди, если будет больше, вылетит exception
engine = sqlalchemy.create_engine(connection, pool_size=30)
# Создаем объект Session и дальше во всех потоках используем только его.
Session = scoped_session(sessionmaker(bind=engine))
#Accounts - моя таблица, к которой мне нужно делать запросы, код по настройке отображения я опустил.
accounts = Session.query(Accounts)
account = accounts[0]
Один интересный момент, account, созданный в одном потоке и переданный в другой, изменить не получится.
Если мы поменяем атрибуты account в новом потоке и выполним Session.commit() - таблица не обновится.
"Один интересный момент, account, созданный в одном потоке и переданный в другой, изменить не получится.
ОтветитьУдалитьЕсли мы поменяем атрибуты account в новом потоке и выполним Session.commit() — таблица не обновится."
Если это фигово - не пробовал чуть иначе подойти к этому? Ну, например, между потоками гонять не чистый account, а словарь с этим объектом?
Да я просто новую сессию в потоке создавал. А словарь не прокатил бы, имхо.
ОтветитьУдалить