Questo particolare caso d'uso è individuato in "Capire l'Autocommit":
Il controllo completo del comportamento di "autocommit" è disponibile utilizzando il generativo Connection.execution_options()
metodo fornito su Connection
, Engine
, Executable
, utilizzando il flag "autocommit" che attiva o disattiva l'autocommit per l'ambito selezionato. Ad esempio, un text()
il costrutto che rappresenta una procedura memorizzata che esegue il commit potrebbe utilizzarlo in modo che un'istruzione SELECT emetta un COMMIT:
engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
Il modo in cui SQLAlchemy autocommit rileva le operazioni di modifica dei dati è che confronta l'istruzione con un modello, cercando cose come UPDATE, DELETE e simili. È impossibile che rilevi se una funzione/procedura memorizzata esegue mutazioni, quindi viene fornito un controllo esplicito sull'autocommit.
La sequenza viene incrementata anche in caso di errore perché nextval()
e setval()
le chiamate non vengono mai annullate.