Re: [psycopg] Changing set_session implementation - Mailing list psycopg

From Karsten Hilbert
Subject Re: [psycopg] Changing set_session implementation
Date
Msg-id 20170727141733.fhwdzlgzsmm43dzk@hermes.hilbert.loc
Whole thread Raw
In response to [psycopg] Changing set_session implementation  (Daniele Varrazzo <daniele.varrazzo@gmail.com>)
Responses Re: [psycopg] Changing set_session implementation
List psycopg
On Sat, Feb 04, 2017 at 04:33:13PM +0000, Daniele Varrazzo wrote:

> I've changed the set_session/set_isolation_level/autocommit connection
> methods and properties to use better the BEGIN parameters
...
> Conversely:
>
>     conn.set_session(readonly=True, autocommit=True)

Does this mean that

    conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)

is now a no-op as observed by the following log snippet or
just diverted to set_session(autocommit=True) ?


code:

    _log.debug('conn state now: %s', gmPG2.capture_conn_state(self.conn))
    _log.debug('setting isolation level to autocommit - should be redundant ?')
    self.conn.set_isolation_level(0)
    _log.debug('conn state now: %s', gmPG2.capture_conn_state(self.conn))

log:

    2017-07-27 16:03:01  DEBUG     gm.bootstrapper  MainThread (-1219281664)
(./bootstrap_gm_db_system.py::__create_db()#810): conn state now: <connection object at 0xb64eca04; dsn:
'dbname=gnumed_v21port=5432 user=postgres sslmode=prefer fallback_application_name=GNUmed client_encoding=utf8
application_name=postgres@template.db',closed: 0> 
                       type: <class 'psycopg2.extras.DictConnection'>
                   identity: 3058616836
                backend PID: 2864
           protocol version: 3
                   encoding: UTF8
    isolation level (psyco): 3 (ISOLATION_LEVEL_SERIALIZABLE)
                   readonly: False
                 autocommit: True
                     closed: 0
          connection status: 1 (STATUS_READY)
         transaction status: 0 (TRANSACTION_STATUS_IDLE)
                 deferrable: None
                      async: 0
         executing async op: False
    2017-07-27 16:03:01  DEBUG     gm.bootstrapper  MainThread (-1219281664)
(./bootstrap_gm_db_system.py::__create_db()#811): setting isolation level to autocommit - should be redundant ? 
    2017-07-27 16:03:01  DEBUG     gm.bootstrapper  MainThread (-1219281664)
(./bootstrap_gm_db_system.py::__create_db()#813): conn state now: <connection object at 0xb64eca04; dsn:
'dbname=gnumed_v21port=5432 user=postgres sslmode=prefer fallback_application_name=GNUmed client_encoding=utf8
application_name=postgres@template.db',closed: 0> 
                       type: <class 'psycopg2.extras.DictConnection'>
                   identity: 3058616836
                backend PID: 2864
           protocol version: 3
                   encoding: UTF8
    isolation level (psyco): 3 (ISOLATION_LEVEL_SERIALIZABLE)
                   readonly: False
                 autocommit: True
                     closed: 0
          connection status: 1 (STATUS_READY)
         transaction status: 0 (TRANSACTION_STATUS_IDLE)
                 deferrable: None
                      async: 0
         executing async op: False


Note that it doesn't actually change the isolation level
(which makes sense because autocommit mode is not an
isolation level). Should conn.isolation_level show
ISOLATION_LEVEL_DEFAULT in this case (meaning "use what the
server/db is configured for") ?  It doesn't seem to make a
roundtrip to the server to _get_ the default because the
database in question defaults to READ_COMMITED. The
SERIALIZABLE results from an earlier call to
.set_isolation_mode() in my code.

(Also note that the connection had already been set to
 autocommit by "set_session(autocommit=True)" before.)


Thanks for the clarification,
Karsten
--
GPG key ID E4071346 @ eu.pool.sks-keyservers.net
E167 67FD A291 2BEA 73BD  4537 78B9 A9F9 E407 1346


psycopg by date:

Previous
From: Daniele Varrazzo
Date:
Subject: [psycopg] Psycopg 2.7.3 released
Next
From: Karsten Hilbert
Date:
Subject: Re: [psycopg] Changing set_session implementation