diff options
author | Marko Kreen | 2008-04-11 13:58:31 +0000 |
---|---|---|
committer | Marko Kreen | 2008-04-11 13:58:31 +0000 |
commit | d7da0f77316da9e9749980026b375b9788aacdb2 (patch) | |
tree | dee5dd9ccc20265a8e46e93fe7db898c54f62620 /python/skytools/psycopgwrapper.py | |
parent | df96178394c52cd2dfca717e4c9eb1d18167d274 (diff) |
drop support for psycopg1
Diffstat (limited to 'python/skytools/psycopgwrapper.py')
-rw-r--r-- | python/skytools/psycopgwrapper.py | 99 |
1 files changed, 43 insertions, 56 deletions
diff --git a/python/skytools/psycopgwrapper.py b/python/skytools/psycopgwrapper.py index 4ba80a4d..9d23e506 100644 --- a/python/skytools/psycopgwrapper.py +++ b/python/skytools/psycopgwrapper.py @@ -13,62 +13,49 @@ import sys __all__ = [] -try: - ##from psycopg2.psycopg1 import connect as _pgconnect - # psycopg2.psycopg1.cursor is too backwards compatible, - # to the point of avoiding optimized access. - # only backwards compat thing we need is dict* methods - - import psycopg2.extensions, psycopg2.extras - from sqltools import dbdict - - class _CompatRow(psycopg2.extras.DictRow): - """Make DictRow more dict-like.""" - __slots__ = ('_index',) - - def __contains__(self, k): - """Returns if such row has such column.""" - return k in self._index - - def copy(self): - """Return regular dict.""" - return dbdict(self.iteritems()) - - def iterkeys(self): - return self._index.iterkeys() - - def itervalues(self): - return list.__iter__(self) - - # obj.foo access - def __getattr__(self, k): - return self[k] - - class _CompatCursor(psycopg2.extras.DictCursor): - """Regular psycopg2 DictCursor with dict* methods.""" - def __init__(self, *args, **kwargs): - psycopg2.extras.DictCursor.__init__(self, *args, **kwargs) - self.row_factory = _CompatRow - dictfetchone = psycopg2.extras.DictCursor.fetchone - dictfetchall = psycopg2.extras.DictCursor.fetchall - dictfetchmany = psycopg2.extras.DictCursor.fetchmany - - class _CompatConnection(psycopg2.extensions.connection): - """Connection object that uses _CompatCursor.""" - def cursor(self): - return psycopg2.extensions.connection.cursor(self, cursor_factory = _CompatCursor) +##from psycopg2.psycopg1 import connect as _pgconnect +# psycopg2.psycopg1.cursor is too backwards compatible, +# to the point of avoiding optimized access. +# only backwards compat thing we need is dict* methods + +import psycopg2.extensions, psycopg2.extras +from skytools.sqltools import dbdict + +class _CompatRow(psycopg2.extras.DictRow): + """Make DictRow more dict-like.""" + __slots__ = ('_index',) + + def __contains__(self, k): + """Returns if such row has such column.""" + return k in self._index + + def copy(self): + """Return regular dict.""" + return dbdict(self.iteritems()) - def _pgconnect(cstr): - """Create a psycopg2 connection.""" - return _CompatConnection(cstr) - -except ImportError: - # use psycopg 1 - try: - from psycopg import connect as _pgconnect - except ImportError: - print "Please install psycopg2 module" - sys.exit(1) + def iterkeys(self): + return self._index.iterkeys() + + def itervalues(self): + return list.__iter__(self) + + # obj.foo access + def __getattr__(self, k): + return self[k] + +class _CompatCursor(psycopg2.extras.DictCursor): + """Regular psycopg2 DictCursor with dict* methods.""" + def __init__(self, *args, **kwargs): + psycopg2.extras.DictCursor.__init__(self, *args, **kwargs) + self.row_factory = _CompatRow + dictfetchone = psycopg2.extras.DictCursor.fetchone + dictfetchall = psycopg2.extras.DictCursor.fetchall + dictfetchmany = psycopg2.extras.DictCursor.fetchmany + +class _CompatConnection(psycopg2.extensions.connection): + """Connection object that uses _CompatCursor.""" + def cursor(self): + return psycopg2.extensions.connection.cursor(self, cursor_factory = _CompatCursor) def connect_database(connstr): """Create a db connection with connect_timeout option. @@ -81,5 +68,5 @@ def connect_database(connstr): connstr += " connect_timeout=15" # create connection - return _pgconnect(connstr) + return _CompatConnection(connstr) |