mirror of
https://github.com/psycopg/psycopg2.git
synced 2025-01-31 09:24:07 +03:00
psycopg1 compatibility module.
This commit is contained in:
parent
5db7764207
commit
fdb68599c7
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,10 @@
|
|||
2005-04-03 Federico Di Gregorio <fog@debian.org>
|
||||
|
||||
* psycopg/psycopgmodule.c (psyco_connect): factory ->
|
||||
connection_factory.
|
||||
|
||||
* lib/psycopg1.py: added psycopg 1.1.x compatibility module.
|
||||
|
||||
2005-03-29 Federico Di Gregorio <fog@debian.org>
|
||||
|
||||
* psycopg/pqpath.c (pq_is_busy): Staring from bug report from
|
||||
|
@ -6,6 +13,13 @@
|
|||
|
||||
2005-03-24 Federico Di Gregorio <fog@debian.org>
|
||||
|
||||
* psycopg/adapter_binary.c (binary_escape): propagated Andrea's
|
||||
fix to binary adapter.
|
||||
|
||||
* psycopg/adapter_qstring.c (qstring_quote): applied patch from
|
||||
Andrea Arcangeli to fix allocation failures (>4Gb) on 64 bit
|
||||
arches.
|
||||
|
||||
* psycopg/typecast_array.c (typecast_array_tokenize): much better
|
||||
tokenization code.
|
||||
|
||||
|
|
|
@ -20,8 +20,6 @@ small and fast, and stable as a rock.
|
|||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
|
||||
__all__ = ['extensions', 'extras', 'tz', 'pool']
|
||||
|
||||
# import the DBAPI-2.0 stuff into top-level module
|
||||
from _psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
|
||||
|
||||
|
|
76
lib/psycopg1.py
Normal file
76
lib/psycopg1.py
Normal file
|
@ -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
|
||||
|
|
@ -102,7 +102,8 @@ psyco_connect(PyObject *self, PyObject *args, PyObject *keywds)
|
|||
char *host=NULL, *port=NULL, *sslmode=NULL;
|
||||
|
||||
static char *kwlist[] = {"dsn", "database", "host", "port",
|
||||
"user", "password", "sslmode", "factory", NULL};
|
||||
"user", "password", "sslmode",
|
||||
"connection_factory", NULL};
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, keywds, "|sssssssO", kwlist,
|
||||
&dsn, &database, &host, &port,
|
||||
|
|
Loading…
Reference in New Issue
Block a user