summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2019-12-09 11:09:09 +0000
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2019-12-09 11:11:39 +0000
commitc20c13c49374d05dc9481928208a5c13bcb09f45 (patch)
tree3a6650c75128e1e0d57696e5194b7aa09c7823a4
parent5c02fdaa0d84b7c4cf41e69aaa154d0ec33c2759 (diff)
downloadpsycopg2-fix-1019.tar.gz
Fixed use of cursor_factory attribute in connecion subclassesfix-1019
Close #1019
-rw-r--r--NEWS7
-rw-r--r--lib/extras.py11
2 files changed, 13 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index ccb07dc..0968b1f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,13 @@
Current release
---------------
+What's new in psycopg 2.8.5
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Fixed use of `!connection_factory` and `!cursor_factory` together
+ (:ticket:`#1019`).
+
+
What's new in psycopg 2.8.4
^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/lib/extras.py b/lib/extras.py
index afc31c3..f6d1718 100644
--- a/lib/extras.py
+++ b/lib/extras.py
@@ -124,7 +124,7 @@ class DictCursorBase(_cursor):
class DictConnection(_connection):
"""A connection that uses `DictCursor` automatically."""
def cursor(self, *args, **kwargs):
- kwargs.setdefault('cursor_factory', DictCursor)
+ kwargs.setdefault('cursor_factory', self.cursor_factory or DictCursor)
return super(DictConnection, self).cursor(*args, **kwargs)
@@ -221,7 +221,7 @@ class DictRow(list):
class RealDictConnection(_connection):
"""A connection that uses `RealDictCursor` automatically."""
def cursor(self, *args, **kwargs):
- kwargs.setdefault('cursor_factory', RealDictCursor)
+ kwargs.setdefault('cursor_factory', self.cursor_factory or RealDictCursor)
return super(RealDictConnection, self).cursor(*args, **kwargs)
@@ -291,7 +291,7 @@ class RealDictRow(OrderedDict):
class NamedTupleConnection(_connection):
"""A connection that uses `NamedTupleCursor` automatically."""
def cursor(self, *args, **kwargs):
- kwargs.setdefault('cursor_factory', NamedTupleCursor)
+ kwargs.setdefault('cursor_factory', self.cursor_factory or NamedTupleCursor)
return super(NamedTupleConnection, self).cursor(*args, **kwargs)
@@ -442,7 +442,7 @@ class LoggingConnection(_connection):
def cursor(self, *args, **kwargs):
self._check()
- kwargs.setdefault('cursor_factory', LoggingCursor)
+ kwargs.setdefault('cursor_factory', self.cursor_factory or LoggingCursor)
return super(LoggingConnection, self).cursor(*args, **kwargs)
@@ -485,7 +485,8 @@ class MinTimeLoggingConnection(LoggingConnection):
return msg + _os.linesep + " (execution time: %d ms)" % t
def cursor(self, *args, **kwargs):
- kwargs.setdefault('cursor_factory', MinTimeLoggingCursor)
+ kwargs.setdefault('cursor_factory',
+ self.cursor_factory or MinTimeLoggingCursor)
return LoggingConnection.cursor(self, *args, **kwargs)