Fixed cursor() arguments propagation to other connection classes

This commit is contained in:
Daniele Varrazzo 2012-04-11 17:59:16 +01:00
parent 095cce5605
commit c86ca7687f

View File

@ -104,8 +104,7 @@ class DictCursorBase(_cursor):
class DictConnection(_connection): class DictConnection(_connection):
"""A connection that uses `DictCursor` automatically.""" """A connection that uses `DictCursor` automatically."""
def cursor(self, *args, **kwargs): def cursor(self, *args, **kwargs):
if 'cursor_factory' not in kwargs: kwargs.setdefault('cursor_factory', DictCursor)
kwargs['cursor_factory'] = DictCursor
return _connection.cursor(self, *args, **kwargs) return _connection.cursor(self, *args, **kwargs)
class DictCursor(DictCursorBase): class DictCursor(DictCursorBase):
@ -196,8 +195,7 @@ class DictRow(list):
class RealDictConnection(_connection): class RealDictConnection(_connection):
"""A connection that uses `RealDictCursor` automatically.""" """A connection that uses `RealDictCursor` automatically."""
def cursor(self, *args, **kwargs): def cursor(self, *args, **kwargs):
if 'cursor_factory' not in kwargs: kwargs.setdefault('cursor_factory', RealDictCursor)
kwargs['cursor_factory'] = RealDictCursor
return _connection.cursor(self, *args, **kwargs) return _connection.cursor(self, *args, **kwargs)
class RealDictCursor(DictCursorBase): class RealDictCursor(DictCursorBase):
@ -252,8 +250,7 @@ class RealDictRow(dict):
class NamedTupleConnection(_connection): class NamedTupleConnection(_connection):
"""A connection that uses `NamedTupleCursor` automatically.""" """A connection that uses `NamedTupleCursor` automatically."""
def cursor(self, *args, **kwargs): def cursor(self, *args, **kwargs):
if 'cursor_factory' not in kwargs: kwargs.setdefault('cursor_factory', NamedTupleCursor)
kwargs['cursor_factory'] = NamedTupleCursor
return _connection.cursor(self, *args, **kwargs) return _connection.cursor(self, *args, **kwargs)
class NamedTupleCursor(_cursor): class NamedTupleCursor(_cursor):
@ -371,12 +368,10 @@ class LoggingConnection(_connection):
raise self.ProgrammingError( raise self.ProgrammingError(
"LoggingConnection object has not been initialize()d") "LoggingConnection object has not been initialize()d")
def cursor(self, name=None): def cursor(self, *args, **kwargs):
self._check() self._check()
if name is None: kwargs.setdefault('cursor_factory', LoggingCursor)
return _connection.cursor(self, cursor_factory=LoggingCursor) return _connection.cursor(self, *args, **kwargs)
else:
return _connection.cursor(self, name, cursor_factory=LoggingCursor)
class LoggingCursor(_cursor): class LoggingCursor(_cursor):
"""A cursor that logs queries using its connection logging facilities.""" """A cursor that logs queries using its connection logging facilities."""
@ -414,12 +409,9 @@ class MinTimeLoggingConnection(LoggingConnection):
if t > self._mintime: if t > self._mintime:
return msg + os.linesep + " (execution time: %d ms)" % t return msg + os.linesep + " (execution time: %d ms)" % t
def cursor(self, name=None): def cursor(self, *args, **kwargs):
self._check() kwargs.setdefault('cursor_factory', MinTimeLoggingCursor)
if name is None: return LoggingConnection.cursor(self, *args, **kwargs)
return _connection.cursor(self, cursor_factory=MinTimeLoggingCursor)
else:
return _connection.cursor(self, name, cursor_factory=MinTimeLoggingCursor)
class MinTimeLoggingCursor(LoggingCursor): class MinTimeLoggingCursor(LoggingCursor):
"""The cursor sub-class companion to `MinTimeLoggingConnection`.""" """The cursor sub-class companion to `MinTimeLoggingConnection`."""