diff options
Diffstat (limited to 'lib/psycopg1.py')
-rw-r--r-- | lib/psycopg1.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/psycopg1.py b/lib/psycopg1.py new file mode 100644 index 0000000..45a1783 --- /dev/null +++ b/lib/psycopg1.py @@ -0,0 +1,76 @@ +"""psycopg 1.1.x compatibility module + +This module uses the new style connection and cursor types to build a psycopg +1.1.1.x compatibility layer. It should be considered a temporary hack to run +old code hile porting to psycopg 2. Import as follows: + + from psycopg import psycopg1 as psycopg +""" +# psycopg/psycopg1.py - psycopg 1.1.x compatibility module +# +# Copyright (C) 2003-2004 Federico Di Gregorio <fog@debian.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. + +import _psycopg as _2psycopg +from psycopg.extensions import cursor as _2cursor +from psycopg.extensions import connection as _2connection + +from psycopg import * +del connect + + +def connect(*args, **kwargs): + """connect(dsn, ...) -> new psycopg 1.1.x compatible connection object""" + kwargs['connection_factory'] = connection + return _2psycopg.connect(*args, **kwargs) + + +class connection(_2connection): + """psycopg 1.1.x connection.""" + + def cursor(self): + """cursor() -> new psycopg 1.1.x compatible cursor object""" + return _2connection.cursor(self, cursor_factory=cursor) + + +class cursor(_2cursor): + """psycopg 1.1.x cursor. + + Note that this cursor implements the exact procedure used by psycopg 1 to + build dictionaries out of result rows. The DictCursor in the + psycopg.extras modules implements a much better and faster algorithm. + """ + + def __build_dict(self, row): + res = {} + for i in range(len(self.description)): + res[self.description[i][0]] = row[i] + return res + + def dictfetchone(self): + row = _2cursor.fetchone(self) + return self.__build_dict(row) + + def dictfetchmany(self, size): + res = [] + rows = _2cursor.fetchmany(self, size) + for row in rows: + res.append(self.__build_dict(row)) + return res + + def dictfetchall(self): + res = [] + rows = _2cursor.fetchall(self) + for row in rows: + res.append(self.__build_dict(row)) + return res + |