この特定のユースケースは、「自動コミットについて」で取り上げられています。
「自動コミット」動作の完全な制御は、生成的な
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()
通話がロールバックされることはありません。