summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/extras.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/extras.py b/lib/extras.py
index bfac2df..f8a21e5 100644
--- a/lib/extras.py
+++ b/lib/extras.py
@@ -368,7 +368,18 @@ class NamedTupleCursor(_cursor):
raise self._exc
else:
def _make_nt(self, namedtuple=namedtuple):
- return namedtuple("Record", [d[0] for d in self.description or ()])
+ def f(s):
+ # NOTE: Python 3 actually allows unicode chars in fields
+ s = _re.sub('[^a-zA-Z0-9_]', '_', s)
+ # Python identifier cannot start with numbers, namedtuple fields
+ # cannot start with underscore. So...
+ if _re.match('^[0-9_]', s):
+ s = 'f' + s
+
+ return s
+
+ return namedtuple(
+ "Record", [f(d[0]) for d in self.description or ()])
class LoggingConnection(_connection):