From fe47619452be7f02122f82350ae63f3772b6d5cc Mon Sep 17 00:00:00 2001 From: Erlend Egeberg Aasland Date: Sun, 19 Jun 2022 22:17:43 +0200 Subject: [PATCH] gh-61162: Clarify sqlite3 connection context manager docs (GH-93890) Explicitly note that transactions are only closed if there is an open transation at `__exit__`, and that transactions are not implicitly opened during `__enter__`. Co-authored-by: CAM Gerlach Co-authored-by: Stanley <46876382+slateny@users.noreply.github.com> Automerge-Triggered-By: GH:erlend-aasland (cherry picked from commit 8e0897814109765a9e463676413fff016875217b) Co-authored-by: Erlend Egeberg Aasland --- Doc/library/sqlite3.rst | 22 +++++++++++++++---- ...2-06-16-10-10-59.gh-issue-61162.1ypkG8.rst | 1 + 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Documentation/2022-06-16-10-10-59.gh-issue-61162.1ypkG8.rst diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index 6981bed5bad627..4bac8fb38c195a 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -1420,13 +1420,27 @@ case-insensitively by name: .. literalinclude:: ../includes/sqlite3/rowclass.py +.. _sqlite3-connection-context-manager: + Using the connection as a context manager ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Connection objects can be used as context managers -that automatically commit or rollback transactions. In the event of an -exception, the transaction is rolled back; otherwise, the transaction is -committed: +A :class:`Connection` object can be used as a context manager that +automatically commits or rolls back open transactions when leaving the body of +the context manager. +If the body of the :keyword:`with` statement finishes without exceptions, +the transaction is committed. +If this commit fails, +or if the body of the ``with`` statement raises an uncaught exception, +the transaction is rolled back. + +If there is no open transaction upon leaving the body of the ``with`` statement, +the context manager is a no-op. + +.. note:: + + The context manager neither implicitly opens a new transaction + nor closes the connection. .. literalinclude:: ../includes/sqlite3/ctx_manager.py diff --git a/Misc/NEWS.d/next/Documentation/2022-06-16-10-10-59.gh-issue-61162.1ypkG8.rst b/Misc/NEWS.d/next/Documentation/2022-06-16-10-10-59.gh-issue-61162.1ypkG8.rst new file mode 100644 index 00000000000000..c8b3a222232189 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2022-06-16-10-10-59.gh-issue-61162.1ypkG8.rst @@ -0,0 +1 @@ +Clarify :mod:`sqlite3` behavior when :ref:`sqlite3-connection-context-manager`. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy