Този конкретен случай на употреба е посочен в „Разбиране на Autocommit“:
Пълният контрол върху поведението на „автоматично завършване“ е достъпен с помощта на генеративния
Connection.execution_options()
метод, предоставен наConnection
,Engine
,Executable
, използвайки флага „autocommit“, който ще включи или изключи автоматичното завършване за избрания обхват. Например,text()
конструкция, представляваща съхранена процедура, която записва, може да я използва, така че оператор SELECT да издаде COMMIT:engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
Начинът, по който SQLAlchemy autocommit открива операции за промяна на данни е, че съпоставя израза с шаблон, търсейки неща като UPDATE, DELETE и други подобни. Невъзможно е да открие дали съхранена функция/процедура извършва мутации и така се предоставя изричен контрол върху автоматичното извършване.
Последователността се увеличава дори при неуспех, защото nextval()
и setval()
повикванията никога не се връщат назад.