Я использую sqlalchemy для orm в моем проекте. Моя проблема в том, что каждый раз, когда я использую session.refresh (obj), используется новое соединение db, которое сохраняется до вызова session.close(). Итак, когда я хочу обновить несколько объектов, у меня быстро закончились соединения.SQLAlchemy session.refresh() создает новые соединения
производитель Сессия:
session = session_maker()
try:
yield session
session.commit()
for obj in session:
session.refresh(obj)
except Exception as e:
session.rollback()
raise e
finally:
session.close()
Использование:
with make_session(...) as session:
for mapped in [self._mapper.map(obj) for obj in objects]:
saved_entities.append(mapped)
session.add(mapped)
session.flush()
Я использую обновления, потому что у меня есть столбцы, которые заполняются на обновление, и я хочу, чтобы вернуть текущие значения.
Любопытно, что, когда я это сделать:
for obj in session:
session.commit()
session.refresh(obj)
используются только два соединения (это хорошо), но объекты не имеют никаких данных.
Я также пробовал 'session.connection(). Close()' после 'session.refresh (obj)', но без успеха. – literg