Commit 546f83de authored by Denis Bilenko's avatar Denis Bilenko

examples/psycopg2_pool.py: add 'isolation_level' optional argument

parent 7c302c3c
...@@ -59,9 +59,14 @@ class DatabaseConnectionPool(object): ...@@ -59,9 +59,14 @@ class DatabaseConnectionPool(object):
pass pass
@contextlib.contextmanager @contextlib.contextmanager
def connection(self): def connection(self, isolation_level=None):
conn = self.get() conn = self.get()
try: try:
if isolation_level is not None:
if conn.isolation_level == isolation_level:
isolation_level = None
else:
conn.set_isolation_level(isolation_level)
yield conn yield conn
except: except:
if conn.closed: if conn.closed:
...@@ -76,12 +81,20 @@ class DatabaseConnectionPool(object): ...@@ -76,12 +81,20 @@ class DatabaseConnectionPool(object):
conn.commit() conn.commit()
finally: finally:
if conn is not None and not conn.closed: if conn is not None and not conn.closed:
if isolation_level is not None:
conn.set_isolation_level(isolation_level)
self.put(conn) self.put(conn)
@contextlib.contextmanager @contextlib.contextmanager
def cursor(self, *args, **kwargs): def cursor(self, *args, **kwargs):
isolation_level = kwargs.pop('isolation_level', None)
conn = self.get() conn = self.get()
try: try:
if isolation_level is not None:
if conn.isolation_level == isolation_level:
isolation_level = None
else:
conn.set_isolation_level(isolation_level)
yield conn.cursor(*args, **kwargs) yield conn.cursor(*args, **kwargs)
except: except:
if conn.closed: if conn.closed:
...@@ -96,6 +109,8 @@ class DatabaseConnectionPool(object): ...@@ -96,6 +109,8 @@ class DatabaseConnectionPool(object):
conn.commit() conn.commit()
finally: finally:
if conn is not None and not conn.closed: if conn is not None and not conn.closed:
if isolation_level is not None:
conn.set_isolation_level(isolation_level)
self.put(conn) self.put(conn)
def _rollback(self, conn): def _rollback(self, conn):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment