summaryrefslogtreecommitdiff
path: root/lib/extras.py
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2010-11-11 10:26:36 +0000
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2010-11-11 10:39:42 +0000
commitef7a5ee8a9a4a01069068985ea892baba6849064 (patch)
tree2606383e7d4101dc4f1096900e4f4c58187c0225 /lib/extras.py
parent11c021cb21f7dc33d0232b425d127023d19b1a14 (diff)
downloadpsycopg2-ef7a5ee8a9a4a01069068985ea892baba6849064.tar.gz
Build the namedtuple only once per execution, not once per fetch.
Diffstat (limited to 'lib/extras.py')
-rw-r--r--lib/extras.py26
1 files changed, 23 insertions, 3 deletions
diff --git a/lib/extras.py b/lib/extras.py
index d19c560..fb33570 100644
--- a/lib/extras.py
+++ b/lib/extras.py
@@ -259,19 +259,39 @@ class NamedTupleCursor(_cursor):
.. |namedtuple| replace:: `!namedtuple`
.. __: http://docs.python.org/release/2.6/library/collections.html#collections.namedtuple
"""
+ Record = None
+
+ def execute(self, query, vars=None):
+ self.Record = None
+ return _cursor.execute(self, query, vars)
+
+ def executemany(self, query, vars):
+ self.Record = None
+ return _cursor.executemany(self, vars)
+
+ def callproc(self, procname, vars=None):
+ self.Record = None
+ return _cursor.callproc(self, procname, vars)
+
def fetchone(self):
t = _cursor.fetchone(self)
if t is not None:
- nt = self._make_nt()
+ nt = self.Record
+ if nt is None:
+ nt = self.Record = self._make_nt()
return nt(*t)
def fetchmany(self, size=None):
- nt = self._make_nt()
+ nt = self.Record
+ if nt is None:
+ nt = self.Record = self._make_nt()
ts = _cursor.fetchmany(self, size)
return [nt(*t) for t in ts]
def fetchall(self):
- nt = self._make_nt()
+ nt = self.Record
+ if nt is None:
+ nt = self.Record = self._make_nt()
ts = _cursor.fetchall(self)
return [nt(*t) for t in ts]