この特定のユースケースは、「自動コミットについて」で取り上げられています。
「自動コミット」動作の完全な制御は、生成的な
Connection.execution_options()を使用して利用できます。Connectionで提供されるメソッド 、Engine、Executable、選択したスコープの自動コミットをオンまたはオフにする「自動コミット」フラグを使用します。たとえば、text()コミットするストアドプロシージャを表すコンストラクトは、SELECTステートメントがCOMMITを発行するようにそれを使用する場合があります:engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
SQLAlchemy autocommitがデータ変更操作を検出する方法は、ステートメントをパターンと照合し、UPDATE、DELETEなどを探すことです。ストアド関数/プロシージャがミューテーションを実行するかどうかを検出することは不可能であるため、自動コミットを明示的に制御できます。
nextval()が原因で、失敗してもシーケンスがインクリメントされます およびsetval() 通話がロールバックされることはありません。