Add optional Connection.autocommit attribute to PEP 249 (#2887)

* Add optional Connection.autocommit attribute as discussed on the DB-SIG ML.

Fix the creation date to point to the announcement date of the
DB-API 2.0.

Add years to the acknowledgements.

Minor editorial changes.

* Fix spelling.

* Fix another spelling mistake.
This commit is contained in:
Marc-Andre Lemburg 2022-11-16 19:04:43 +01:00 committed by GitHub
parent 86ad9a2aa0
commit 74e6056162
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 52 additions and 9 deletions

View File

@ -5,7 +5,7 @@ Discussions-To: db-sig@python.org
Status: Final Status: Final
Type: Informational Type: Informational
Content-Type: text/x-rst Content-Type: text/x-rst
Created: 29-Mar-2001 Created: 12-Apr-1999
Post-History: Post-History:
Replaces: 248 Replaces: 248
@ -932,6 +932,34 @@ Cursor\ `.lastrowid`_
*Warning Message:* "DB-API extension cursor.lastrowid used" *Warning Message:* "DB-API extension cursor.lastrowid used"
.. _Connection.autocommit:
.. _.autocommit:
Connection\ `.autocommit`_
Attribute to query and set the autocommit mode of the connection.
Return ``True`` if the connection is operating in autocommit (non-
transactional) mode. Return ``False`` if the connection is
operating in manual commit (transactional) mode.
Setting the attribute to ``True`` or ``False`` adjusts the
connection's mode accordingly.
Changing the setting from ``True`` to ``False`` (disabling
autocommit) will have the database leave autocommit mode and start
a new transaction. Changing from ``False`` to ``True`` (enabling
autocommit) has database dependent semantics with respect to how
pending transactions are handled. [12]_
*Deprecation notice*: Even though several database modules implement
both the read and write nature of this attribute, setting the
autocommit mode by writing to the attribute is deprecated, since
this may result in I/O and related exceptions, making it difficult
to implement in an async context. [13]_
*Warning Message:* "DB-API extension connection.autocommit used"
Optional Error Handling Extensions Optional Error Handling Extensions
================================== ==================================
@ -1232,6 +1260,8 @@ Footnotes
connect(dsn='myhost:MYDB', user='guido', password='234$') connect(dsn='myhost:MYDB', user='guido', password='234$')
Also see [13]_ regarding planned future additions to this list.
.. [2] Module implementors should prefer ``numeric``, ``named`` or .. [2] Module implementors should prefer ``numeric``, ``named`` or
``pyformat`` over the other formats because these offer more ``pyformat`` over the other formats because these offer more
clarity and flexibility. clarity and flexibility.
@ -1241,10 +1271,10 @@ Footnotes
the method, the interface should throw an exception in case the the method, the interface should throw an exception in case the
method is used. method is used.
The preferred approach is to not implement the method and thus The preferred approach is to not implement the method and thus have
have Python generate an ``AttributeError`` in case the method is requested. This Python generate an ``AttributeError`` in case the method is
allows the programmer to check for database capabilities using the requested. This allows the programmer to check for database
standard ``hasattr()`` function. capabilities using the standard ``hasattr()`` function.
For some dynamically configured interfaces it may not be For some dynamically configured interfaces it may not be
appropriate to require dynamically making the method appropriate to require dynamically making the method
@ -1309,20 +1339,33 @@ Footnotes
the time of writing of the DB-API 2.0 in 1999, the warning framework the time of writing of the DB-API 2.0 in 1999, the warning framework
in Python did not yet exist. in Python did not yet exist.
.. [12] Many database modules implementing the autocommit attribute will
automatically commit any pending transaction and then enter
autocommit mode. It is generally recommended to explicitly
`.commit()`_ or `.rollback()`_ transactions prior to changing the
autocommit setting, since this is portable across database modules.
.. [13] In a future revision of the DB-API, we are going to introduce a
new method ``.setautocommit(value)``, which will allow setting the
autocommit mode, and make ``.autocommit`` a read-only attribute.
Additionally, we are considering to add a new standard keyword
parameter ``autocommit`` to the Connection constructor. Modules
authors are encouraged to add these changes in preparation for this
change.
Acknowledgements Acknowledgements
================ ================
Many thanks go to Andrew Kuchling who converted the Python Database Many thanks go to Andrew Kuchling who converted the Python Database
API Specification 2.0 from the original HTML format into the PEP API Specification 2.0 from the original HTML format into the PEP
format. format in 2001.
Many thanks to James Henstridge for leading the discussion which led Many thanks to James Henstridge for leading the discussion which led to
to the standardization of the two-phase commit API extensions. the standardization of the two-phase commit API extensions in 2008.
Many thanks to Daniele Varrazzo for converting the specification from Many thanks to Daniele Varrazzo for converting the specification from
text PEP format to ReST PEP format, which allows linking to various text PEP format to ReST PEP format, which allows linking to various
parts. parts in 2012.
Copyright Copyright
========= =========