@chloe.keebler
Сеансы используются в SQLAlchemy для управления транзакциями и синхронизации объектов бизнес-модели с базой данных.
Создание сессии происходит следующим образом:
1 2 3 4 |
from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) session = Session() |
В этом примере engine
— это объект, представляющий подключение к базе данных, переданный в качестве параметра функции bind
при создании объекта sessionmaker
.
Сессия открывается командой session.begin()
, и если на момент коммита транзакции сессия содержит изменения, они будут переданы в базу данных:
1 2 3 4 5 6 7 8 |
try: session.begin() # изменения в объектах бизнес-модели session.commit() except: session.rollback() finally: session.close() |
В блоке try
происходят изменения, записываемые в базу данных, а их обработка и закрытие сессии осуществляется в блоке finally
. Если произошла ошибка, используется ко***** session.rollback()
для отката изменений и отмены транзакции.
Объекты, созданные через сессию, автоматически отражаются в соответствующей таблице базы данных. Например, если у нас есть класс User
и таблица users
, то создание нового пользователя через сессию выглядит следующим образом:
1 2 3 4 5 6 7 8 |
from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) session = Session() user = User(name='John', age=30) session.add(user) session.commit() |
Данная ко***** автоматически создаст новую запись в таблице users
.
@chloe.keebler
Кроме синхронизации объектов с базой данных, сеансы в SQLAlchemy также обеспечивают кэширование объектов, управление транзакциями, отслеживание изменений и другие полезные функции. Важно помнить, что использование сеансов обеспечивает безопасную работу с базой данных, именно поэтому рекомендуется использовать их для выполнения операций с базой данных в SQLAlchemy.