diff options
Diffstat (limited to 'lib/extras.py')
-rw-r--r-- | lib/extras.py | 13 |
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): |