Author: phd
Date: 2009-09-08 11:58:32 -0600 (Tue, 08 Sep 2009)
New Revision: 3972
Modified:
SQLObject/trunk/docs/News.txt
SQLObject/trunk/docs/SQLObject.txt
SQLObject/trunk/sqlobject/postgres/pgconnection.py
Log:
The user can choose a DB API driver for PostgreSQL by using a "backend"
parameter in DB URI or PostgresConnection.
Modified: SQLObject/trunk/docs/News.txt
===================================================================
--- SQLObject/trunk/docs/News.txt 2009-09-08 17:56:19 UTC (rev 3971)
+++ SQLObject/trunk/docs/News.txt 2009-09-08 17:58:32 UTC (rev 3972)
@@ -21,6 +21,13 @@
"pysqlite2" (alias "sqlite2"), "sqlite3", "sqlite" (alias "sqlite1").
Default is to test pysqlite2, sqlite3 and sqlite in that order.
+* The user can choose a DB API driver for PostgreSQL by using a "backend"
+ parameter in DB URI or PostgresConnection. Possible backends are:
+ "psycopg2", "psycopg1", "psycopg" (tries psycopg2 and psycopg1),
+ "pygresql". Default is "psycopg".
+ WARNING: API change! PostgresConnection's parameter "usePygresql" is now
+ replaced with "backend=pygresql".
+
* alternateMethodName is defined for all unique fields, not only alternateID;
this makes SQLObject create .by*() methods for all unique fields.
Modified: SQLObject/trunk/docs/SQLObject.txt
===================================================================
--- SQLObject/trunk/docs/SQLObject.txt 2009-09-08 17:56:19 UTC (rev 3971)
+++ SQLObject/trunk/docs/SQLObject.txt 2009-09-08 17:58:32 UTC (rev 3972)
@@ -1733,6 +1733,11 @@
PostgresConnection supports transactions and all other features.
+The user can choose a DB API driver for PostgreSQL by using a "backend"
+parameter in DB URI or PostgresConnection. Possible backends are:
+"psycopg2", "psycopg1", "psycopg" (tries psycopg2 and psycopg1),
+"pygresql". Default is "psycopg".
+
SQLite
------
Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/postgres/pgconnection.py 2009-09-08 17:56:19 UTC (rev 3971)
+++ SQLObject/trunk/sqlobject/postgres/pgconnection.py 2009-09-08 17:58:32 UTC (rev 3972)
@@ -8,22 +8,28 @@
supportTransactions = True
dbName = 'postgres'
- schemes = [dbName, 'postgresql', 'psycopg']
+ schemes = [dbName, 'postgresql']
def __init__(self, dsn=None, host=None, port=None, db=None,
- user=None, password=None, usePygresql=False, unicodeCols=False,
+ user=None, password=None, backend='psycopg', unicodeCols=False,
**kw):
- self.usePygresql = usePygresql
- if usePygresql:
- import pgdb
- self.module = pgdb
- else:
+ self.backend = backend
+ if backend == 'psycopg2':
+ import psycopg2 as psycopg
+ elif backend == 'psycopg1':
+ import psycopg
+ elif backend == 'psycopg':
try:
import psycopg2 as psycopg
except ImportError:
import psycopg
+ elif backend == 'pygresql':
+ import pgdb
+ self.module = pgdb
+ else:
+ raise ValueError('Unknown PostgreSQL backend "%s", expected psycopg2, psycopg1 or pygresql' % backend)
+ if backend.startswith('psycopg'):
self.module = psycopg
-
# Register a converter for psycopg Binary type.
registerConverter(type(psycopg.Binary('')),
PsycoBinaryConverter)
@@ -37,7 +43,7 @@
if host:
dsn_dict["host"] = host
if port:
- if usePygresql:
+ if backend == 'pygresql':
dsn_dict["host"] = "%s:%d" % (host, port)
else:
if psycopg.__version__.split('.')[0] == '1':
@@ -52,7 +58,7 @@
dsn_dict["password"] = password
self.use_dsn = dsn is not None
if dsn is None:
- if usePygresql:
+ if backend == 'pygresql':
dsn = ''
if host:
dsn += host
@@ -308,7 +314,7 @@
# We have to connect to *some* database, so we'll connect to
# template1, which is a common open database.
# @@: This doesn't use self.use_dsn or self.dsn_dict
- if self.usePygresql:
+ if self.backend == 'pygresql':
dsn = '%s:template1:%s:%s' % (
self.host or '', self.user or '', self.password or '')
else:
|