Я использую SQLAlchemy's provided contextmanager
для обработки сеансов для меня. То, что я не понимаю, как получить автоматически сгенерированный идентификатор, потому что (1) идентификатор не создаются, пока после commit()
называют еще (2) вновь созданный экземпляр доступен только в рамках контекста менеджера:Как использовать SQLAlchemy contextmanager и все еще получать идентификатор строки?
def save_soft_file(name, is_geo=False):
with session_scope() as session:
soft_file = models.SoftFile(name=name, is_geo=is_geo)
session.add(soft_file)
# id is not available here, because the session has not been committed
# soft_file is not available here, because the session is out of context
return soft_file.id
Что мне не хватает?