diff options
author | Marko Kreen | 2008-03-11 16:25:15 +0000 |
---|---|---|
committer | Marko Kreen | 2008-03-11 16:25:15 +0000 |
commit | 906c5e614fe4c669f73b712487201c5b0a53beec (patch) | |
tree | 41d395244f9bf9941cb65559f83e0d6f2187239b /python/skytools/psycopgwrapper.py | |
parent | 75310798a4a66db7ec60adafad4413af89502c11 (diff) |
very experimental row.col access, add __slots__
Diffstat (limited to 'python/skytools/psycopgwrapper.py')
-rw-r--r-- | python/skytools/psycopgwrapper.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/python/skytools/psycopgwrapper.py b/python/skytools/psycopgwrapper.py index 6c8bd421..ef4fe94e 100644 --- a/python/skytools/psycopgwrapper.py +++ b/python/skytools/psycopgwrapper.py @@ -21,9 +21,11 @@ try: import psycopg2.extensions, psycopg2.extras from psycopg2.extensions import QuotedString + from sqltools import dbdict class _CompatRow(psycopg2.extras.DictRow): """Make DictRow more dict-like.""" + __slots__ = ('_index',) def __setitem__(self, k, v): """Allow adding new key-value pairs. @@ -47,7 +49,7 @@ try: def copy(self): """Return regular dict.""" - return dict(self.items()) + return dbdict(self.iteritems()) def iterkeys(self): return self._index.iterkeys() @@ -55,6 +57,20 @@ try: def itervalues(self): return list.__iter__(self) + # obj.foo access + def __getattr__(self, k): + try: + return psycopg2.extras.DictRow.__getattr__(self, k) + except AttributeError: + return self[k] + def __setattr__(self, k, v): + if k == "_index": + return psycopg2.extras.DictRow.__setattr__(self, k, v) + else: + self[k] = v + def __delattr__(self, k): + raise Exception("del not supported for DictRow") + class _CompatCursor(psycopg2.extras.DictCursor): """Regular psycopg2 DictCursor with dict* methods.""" def __init__(self, *args, **kwargs): |