From: Mike Bayer Date: Thu, 12 Jan 2017 20:57:46 +0000 (-0500) Subject: - document how to use autocommit isolation level for CONCURRENTLY, X-Git-Tag: rel_1_0_17~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b0c4a6e1bc7a7211c556eb9f3394bd24ffa951eb;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - document how to use autocommit isolation level for CONCURRENTLY, fixes #3887 Change-Id: I6d1a13b7bb4169204105c7a100d17cfed3ded9d1 (cherry picked from commit 0460bc79d9986132646049d8167bd5dbe3388a65) --- diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 9d596dfd32..d0aa318dba 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -431,6 +431,26 @@ The above index construct will render SQL as:: .. versionadded:: 0.9.9 +When using CONCURRENTLY, the Postgresql database requires that the statement +be invoked outside of a transaction block. The Python DBAPI enforces that +even for a single statement, a transaction is present, so to use this +construct, the DBAPI's "autocommit" mode must be used:: + + metadata = MetaData() + table = Table( + "foo", metadata, + Column("id", String)) + index = Index( + "foo_idx", table.c.id, postgresql_concurrently=True) + + with engine.connect() as conn: + with conn.execution_options(isolation_level='AUTOCOMMIT'): + table.create(conn) + +.. seealso:: + + :ref:`postgresql_isolation_level` + .. _postgresql_index_reflection: Postgresql Index Reflection