mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-06-09 00:56:00 -04:00
fix up the isolation level docs which were a mess
This commit is contained in:
@@ -41,24 +41,40 @@ case.
|
||||
To force the usage of RETURNING by default off, specify the flag
|
||||
``implicit_returning=False`` to :func:`.create_engine`.
|
||||
|
||||
.. _postgresql_isolation_level:
|
||||
|
||||
Transaction Isolation Level
|
||||
---------------------------
|
||||
|
||||
:func:`.create_engine` accepts an ``isolation_level`` parameter which results
|
||||
in the command ``SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
|
||||
<level>`` being invoked for every new connection. Valid values for this
|
||||
parameter include ``READ COMMITTED``, ``READ UNCOMMITTED``, ``REPEATABLE READ``,
|
||||
and ``SERIALIZABLE``::
|
||||
All Postgresql dialects support setting of transaction isolation level
|
||||
both via a dialect-specific parameter ``isolation_level``
|
||||
accepted by :func:`.create_engine`,
|
||||
as well as the ``isolation_level`` argument as passed to :meth:`.Connection.execution_options`.
|
||||
When using a non-psycopg2 dialect, this feature works by issuing the
|
||||
command ``SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
|
||||
<level>`` for each new connection.
|
||||
|
||||
To set isolation level using :func:`.create_engine`::
|
||||
|
||||
engine = create_engine(
|
||||
"postgresql+pg8000://scott:tiger@localhost/test",
|
||||
isolation_level="READ UNCOMMITTED"
|
||||
)
|
||||
|
||||
When using the psycopg2 dialect, a psycopg2-specific method of setting
|
||||
transaction isolation level is used, but the API of ``isolation_level``
|
||||
remains the same. The psycopg2 dialect also includes support
|
||||
for ``AUTOCOMMIT`` isolation - see :ref:`psycopg2_isolation`.
|
||||
To set using per-connection execution options::
|
||||
|
||||
connection = engine.connect()
|
||||
connection = connection.execution_options(isolation_level="READ COMMITTED")
|
||||
|
||||
Valid values for ``isolation_level`` include:
|
||||
|
||||
* ``READ COMMITTED``
|
||||
* ``READ UNCOMMITTED``
|
||||
* ``REPEATABLE READ``
|
||||
* ``SERIALIZABLE``
|
||||
|
||||
The :mod:`~sqlalchemy.dialects.postgresql.psycopg2` dialect also offers the special level ``AUTOCOMMIT``. See
|
||||
:ref:`psycopg2_isolation_level` for details.
|
||||
|
||||
|
||||
Remote / Cross-Schema Table Introspection
|
||||
|
||||
@@ -17,7 +17,7 @@ psycopg2 Connect Arguments
|
||||
psycopg2-specific keyword arguments which are accepted by
|
||||
:func:`.create_engine()` are:
|
||||
|
||||
* *server_side_cursors* - Enable the usage of "server side cursors" for SQL
|
||||
* ``server_side_cursors``: Enable the usage of "server side cursors" for SQL
|
||||
statements which support this feature. What this essentially means from a
|
||||
psycopg2 point of view is that the cursor is created using a name, e.g.
|
||||
``connection.cursor('some name')``, which has the effect that result rows are
|
||||
@@ -28,8 +28,12 @@ psycopg2-specific keyword arguments which are accepted by
|
||||
time are fetched over the wire to reduce conversational overhead.
|
||||
Note that the ``stream_results=True`` execution option is a more targeted
|
||||
way of enabling this mode on a per-execution basis.
|
||||
* *use_native_unicode* - Enable the usage of Psycopg2 "native unicode" mode
|
||||
per connection. True by default.
|
||||
* ``use_native_unicode``: Enable the usage of Psycopg2 "native unicode" mode
|
||||
per connection. True by default.
|
||||
* ``isolation_level``: This option, available for all Posgtresql dialects,
|
||||
includes the ``AUTOCOMMIT`` isolation level when using the psycopg2
|
||||
dialect. See :ref:`psycopg2_isolation_level`.
|
||||
|
||||
|
||||
Unix Domain Connections
|
||||
------------------------
|
||||
@@ -60,13 +64,11 @@ The following DBAPI-specific options are respected when used with
|
||||
|
||||
* isolation_level - Set the transaction isolation level for the lifespan of a
|
||||
:class:`.Connection` (can only be set on a connection, not a statement
|
||||
or query). This includes the options ``SERIALIZABLE``, ``READ COMMITTED``,
|
||||
``READ UNCOMMITTED``, ``REPEATABLE READ``, and ``AUTOCOMMIT``.
|
||||
or query). See :ref:`psycopg2_isolation_level`.
|
||||
|
||||
.. versionadded:: 0.8.2 support for AUTOCOMMIT isolation level when using
|
||||
psycopg2.
|
||||
|
||||
* stream_results - Enable or disable usage of server side cursors.
|
||||
* stream_results - Enable or disable usage of psycopg2 server side cursors -
|
||||
this feature makes use of "named" cursors in combination with special
|
||||
result handling methods so that result rows are not fully buffered.
|
||||
If ``None`` or not set, the ``server_side_cursors`` option of the
|
||||
:class:`.Engine` is used.
|
||||
|
||||
@@ -117,16 +119,31 @@ Transactions
|
||||
|
||||
The psycopg2 dialect fully supports SAVEPOINT and two-phase commit operations.
|
||||
|
||||
.. _psycopg2_isolation:
|
||||
.. _psycopg2_isolation_level:
|
||||
|
||||
Transaction Isolation Level
|
||||
---------------------------
|
||||
Psycopg2 Transaction Isolation Level
|
||||
-------------------------------------
|
||||
|
||||
The ``isolation_level`` parameter of :func:`.create_engine` here makes use
|
||||
As discussed in :ref:`postgresql_isolation_level`,
|
||||
all Postgresql dialects support setting of transaction isolation level
|
||||
both via the ``isolation_level`` parameter passed to :func:`.create_engine`,
|
||||
as well as the ``isolation_level`` argument used by :meth:`.Connection.execution_options`.
|
||||
When using the psycopg2 dialect, these options make use of
|
||||
psycopg2's ``set_isolation_level()`` connection method, rather than
|
||||
issuing a ``SET SESSION CHARACTERISTICS`` command. This because psycopg2
|
||||
resets the isolation level on each new transaction, and needs to know
|
||||
at the API level what level should be used.
|
||||
emitting a Postgresql directive; this is because psycopg2's API-level
|
||||
setting is always emitted at the start of each transaction in any case.
|
||||
|
||||
The psycopg2 dialect supports these constants for isolation level:
|
||||
|
||||
* ``READ COMMITTED``
|
||||
* ``READ UNCOMMITTED``
|
||||
* ``REPEATABLE READ``
|
||||
* ``SERIALIZABLE``
|
||||
* ``AUTOCOMMIT``
|
||||
|
||||
.. versionadded:: 0.8.2 support for AUTOCOMMIT isolation level when using
|
||||
psycopg2.
|
||||
|
||||
|
||||
NOTICE logging
|
||||
---------------
|
||||
|
||||
Reference in New Issue
Block a user