В SQLAlchemy asyncIO,
asyncsession.begin() и
session.commit() представляют два разных этапа в асинхронном цикле работы сессии.
asyncsession.begin() используется для начала транзакции. Транзакция представляет собой блок операций, который будет выполнен атомарно – либо все операции успешно применятся, либо ни одна из них. Транзакция обеспечивает целостность данных и позволяет откатывать операции, если что-то идет не так.
session.commit() используется для фиксации (commit) изменений, сделанных во время транзакции. Это означает, что все изменения, выполненные в рамках транзакции, сохраняются в базе данных. Если транзакция завершилась успешно, то изменения становятся видимыми для других пользователей базы данных.
Таким образом,
asyncsession.begin() начинает транзакцию, а
session.commit() закрывает транзакцию и сохраняет изменения. Эти операции необходимо использовать совместно для правильной работы сессии.
Пример использования:
async with AsyncSession(engine) as session:
async with session.begin():
# выполнение операций внутри транзакции
# изменение, добавление или удаление объектов
# выполнение запросов
# после окончания транзакции вызываем session.commit()
await session.commit()