Ten konkretny przypadek użycia jest wyróżniony w „Zrozumieniu automatycznego zatwierdzania”:
Pełna kontrola nad zachowaniem „autocommit” jest dostępna za pomocą generatywnego Connection.execution_options()
metoda podana w Connection
, Engine
, Executable
, używając flagi „autocommit”, która włącza lub wyłącza automatyczne zatwierdzanie dla wybranego zakresu. Na przykład text()
konstrukcja reprezentująca procedurę składowaną, która zatwierdza może jej użyć, tak aby instrukcja SELECT wywołała COMMIT:
engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
Sposób, w jaki funkcja automatycznego zatwierdzania SQLAlchemy wykrywa operacje zmiany danych, polega na tym, że dopasowuje instrukcję do wzorca, szukając elementów takich jak UPDATE, DELETE i tym podobnych. Nie jest możliwe wykrycie, czy przechowywana funkcja/procedura wykonuje mutacje, dlatego zapewniona jest wyraźna kontrola nad automatycznym zatwierdzaniem.
Sekwencja jest zwiększana nawet w przypadku niepowodzenia, ponieważ nextval()
i setval()
połączenia nigdy nie są cofane.