Как использовать сеансы в SQLAlchemy?

Пользователь

от chloe.keebler , в категории: Python , 2 года назад

Как использовать сеансы в SQLAlchemy?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ludie , 2 года назад

@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.

Пользователь

от marisa , 8 месяцев назад

@chloe.keebler 

Кроме синхронизации объектов с базой данных, сеансы в SQLAlchemy также обеспечивают кэширование объектов, управление транзакциями, отслеживание изменений и другие полезные функции. Важно помнить, что использование сеансов обеспечивает безопасную работу с базой данных, именно поэтому рекомендуется использовать их для выполнения операций с базой данных в SQLAlchemy.