У меня следующий код в попытке избежать дублирования кода управления сеансом.Проблема в том, что session.add
в функции add_model
дает мне None
, потому что необходимо вызвать метод flush
, чтобы session.add
дал мне новый объект с его идентификатором.Я не могу понять, как обойти это.
Любая помощь будет принята с благодарностью.
from contextlib import contextmanager
@contextmanager
def session_scope():
"""Provide a transactional scope around a series of operations."""
session = Session()
try:
yield session
session.commit()
except:
session.rollback()
raise
finally:
session.close()
def add_model(model):
with session_scope as session:
return db.session.add(model)