diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2010-11-11 10:26:36 +0000 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2010-11-11 10:39:42 +0000 |
commit | ef7a5ee8a9a4a01069068985ea892baba6849064 (patch) | |
tree | 2606383e7d4101dc4f1096900e4f4c58187c0225 /lib/extras.py | |
parent | 11c021cb21f7dc33d0232b425d127023d19b1a14 (diff) | |
download | psycopg2-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.py | 26 |
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] |