При условии, что вы используете «реальный» СУБД с транзакциями, вы должны быть в состоянии выполнить откат текущей транзакции, так же, как вы могли бы сделать с другими операциями с участием session
:
session.execute('DELETE FROM users') # feel the thrill!
session.rollback()
типичная установка SQLAlchemy с пирамидой включает ZopeTransactionExtension, которая объединяет управление сеансами с циклом запроса-ответ пирамиды. В этом случае, чтобы выполнить откат транзакции, Вы должны будете сделать это с помощью менеджера транзакций компании ZTE:
import transaction
transaction.rollback()
Обратите внимание, что откат транзакции будет отменить все изменения, сделанные в транзакции, а не только ваше session.execute()
заявление. Если вы хотите только «отменить» только одно заявление, вы можете попробовать использовать SQLAlchemy nested transactions, поддержка которого зависит от используемой вами СУБД,
Зачем вам это нужно? Каков ваш прецедент? – matino
Если 'session.execute' не совершил, то вы можете' session.rollback' – adarsh
Я, хотя 'session.execute' всегда фиксирует, не так ли? – matino