diff options
author | Marko Kreen | 2007-08-30 11:12:33 +0000 |
---|---|---|
committer | Marko Kreen | 2007-08-30 11:12:33 +0000 |
commit | 0cfb6ab021152a441f73f06a41714c82b7110af1 (patch) | |
tree | 97e71ab7835c6203be333a7288f0b30c56dd72ab /python/skytools/psycopgwrapper.py | |
parent | 9921bce6ed59a01aa3fba497018c7b2fe233a14d (diff) |
add more dict() methods
Diffstat (limited to 'python/skytools/psycopgwrapper.py')
-rw-r--r-- | python/skytools/psycopgwrapper.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/python/skytools/psycopgwrapper.py b/python/skytools/psycopgwrapper.py index 4f10188f..805b5bda 100644 --- a/python/skytools/psycopgwrapper.py +++ b/python/skytools/psycopgwrapper.py @@ -21,8 +21,16 @@ try: from psycopg2.extensions import QuotedString class _CompatRow(psycopg2.extras.DictRow): - """Allow setting fields by name.""" + """Make DictRow more dict-like.""" + def __setitem__(self, k, v): + """Allow adding new key-value pairs. + + Such operation adds new field to global _index. + But that is OK, as .description is unchanged, and access + to such fields before setting them should raise exception + anyway. + """ if type(k) != int: if k not in self._index: self._index[k] = len(self._index) @@ -30,9 +38,20 @@ try: while k >= len(self): self.append(None) return list.__setitem__(self, k, v) + + def __contains__(self, k): + """Returns if such row has such column.""" + return k in self._index + def copy(self): - "Return regular dict" + """Return regular dict.""" return dict(self.items()) + + def iterkeys(self): + return self._index.iterkeys() + + def __iter__(self): + return self._index.__iter__() class _CompatCursor(psycopg2.extras.DictCursor): """Regular psycopg2 DictCursor with dict* methods.""" |