Author: phd
Date: 2005-02-24 14:05:57 +0000 (Thu, 24 Feb 2005)
New Revision: 646
Modified:
trunk/SQLObject/sqlobject/dbconnection.py
trunk/SQLObject/sqlobject/firebird/firebirdconnection.py
trunk/SQLObject/sqlobject/maxdb/maxdbconnection.py
trunk/SQLObject/sqlobject/mysql/mysqlconnection.py
trunk/SQLObject/sqlobject/postgres/pgconnection.py
trunk/SQLObject/sqlobject/sqlite/sqliteconnection.py
trunk/SQLObject/sqlobject/sybase/sybaseconnection.py
trunk/SQLObject/sqlobject/tests/test_parse.py
Log:
_parseURI now splits host and port, if the host contains :port.
Modified: trunk/SQLObject/sqlobject/dbconnection.py
===================================================================
--- trunk/SQLObject/sqlobject/dbconnection.py 2005-02-24 04:18:55 UTC (rev 645)
+++ trunk/SQLObject/sqlobject/dbconnection.py 2005-02-24 14:05:57 UTC (rev 646)
@@ -93,6 +93,17 @@
password = None
else:
user = password = None
+ if host and host.find(':') != -1:
+ _host, port = host.split(':')
+ try:
+ port = int(port)
+ except ValueError:
+ raise ValueError, "port must be integer, got '%s' instead" % port
+ if not (1 <= port <= 65535):
+ raise ValueError, "port must be integer in the range 1-65535, got '%d' instead" % port
+ host = _host
+ else:
+ port = None
path = '/' + rest
args = {}
if path.find('?') != -1:
@@ -102,7 +113,7 @@
argname, argvalue = single.split('=', 1)
argvalue = urllib.unquote(argvalue)
args[argname] = argvalue
- return user, password, host, path, args
+ return user, password, host, port, path, args
_parseURI = staticmethod(_parseURI)
class DBAPI(DBConnection):
Modified: trunk/SQLObject/sqlobject/firebird/firebirdconnection.py
===================================================================
--- trunk/SQLObject/sqlobject/firebird/firebirdconnection.py 2005-02-24 04:18:55 UTC (rev 645)
+++ trunk/SQLObject/sqlobject/firebird/firebirdconnection.py 2005-02-24 14:05:57 UTC (rev 646)
@@ -16,7 +16,7 @@
if kinterbasdb is None:
import kinterbasdb
self.module = kinterbasdb
-
+
self.limit_re = re.compile('^\s*(select )(.*)', re.IGNORECASE)
if not autoCommit and not kw.has_key('pool'):
@@ -37,7 +37,7 @@
DBAPI.__init__(self, **kw)
def connectionFromURI(cls, uri):
- auth, password, host, path, args = cls._parseURI(uri)
+ auth, password, host, port, path, args = cls._parseURI(uri)
if not password:
password = 'masterkey'
if not auth:
@@ -45,7 +45,7 @@
path = path.replace('/', os.sep)
return cls(host, db=path, user=auth, passwd=password, **args)
connectionFromURI = classmethod(connectionFromURI)
-
+
def _runWithConnection(self, meth, *args):
conn = self.getConnection()
# @@: Horrible auto-commit implementation. Just horrible!
Modified: trunk/SQLObject/sqlobject/maxdb/maxdbconnection.py
===================================================================
--- trunk/SQLObject/sqlobject/maxdb/maxdbconnection.py 2005-02-24 04:18:55 UTC (rev 645)
+++ trunk/SQLObject/sqlobject/maxdb/maxdbconnection.py 2005-02-24 14:05:57 UTC (rev 646)
@@ -78,7 +78,7 @@
DBAPI.__init__(self, **kw)
def connectionFromURI(cls, uri):
- auth, password, host, path, args = cls._parseURI(uri)
+ auth, password, host, port, path, args = cls._parseURI(uri)
path = path.replace('/', os.path.sep)
return cls(host, db=path, user=auth, passwd=password, **args)
connectionFromURI = classmethod(connectionFromURI)
Modified: trunk/SQLObject/sqlobject/mysql/mysqlconnection.py
===================================================================
--- trunk/SQLObject/sqlobject/mysql/mysqlconnection.py 2005-02-24 04:18:55 UTC (rev 645)
+++ trunk/SQLObject/sqlobject/mysql/mysqlconnection.py 2005-02-24 14:05:57 UTC (rev 646)
@@ -20,9 +20,9 @@
DBAPI.__init__(self, **kw)
def connectionFromURI(cls, uri):
- user, password, host, path, args = cls._parseURI(uri)
+ user, password, host, port, path, args = cls._parseURI(uri)
return cls(db=path.strip('/'), user=user or '', passwd=password or '',
- host=host or 'localhost', **args)
+ host=host or 'localhost', port=port or '', **args)
connectionFromURI = classmethod(connectionFromURI)
def makeConnection(self):
Modified: trunk/SQLObject/sqlobject/postgres/pgconnection.py
===================================================================
--- trunk/SQLObject/sqlobject/postgres/pgconnection.py 2005-02-24 04:18:55 UTC (rev 645)
+++ trunk/SQLObject/sqlobject/postgres/pgconnection.py 2005-02-24 14:05:57 UTC (rev 646)
@@ -12,7 +12,7 @@
dbName = 'postgres'
schemes = [dbName, 'postgresql', 'psycopg']
- def __init__(self, dsn=None, host=None, db=None,
+ def __init__(self, dsn=None, host=None, port=None, db=None,
user=None, passwd=None, usePygresql=False,
**kw):
global psycopg, pgdb
@@ -31,6 +31,7 @@
self.user = user
self.host = host
+ self.port = port
self.db = db
self.password = passwd
if dsn is None:
@@ -44,6 +45,8 @@
if host:
# @@: right format?
dsn.append('host=%s' % host)
+ if port:
+ dsn.append('port=%s' % port)
dsn = ' '.join(dsn)
self.dsn = dsn
DBAPI.__init__(self, **kw)
@@ -52,9 +55,9 @@
self._server_version = None # Not yet initialized
def connectionFromURI(cls, uri):
- user, password, host, path, args = cls._parseURI(uri)
+ user, password, host, port, path, args = cls._parseURI(uri)
path = path.strip('/')
- return cls(host=host, db=path, user=user, passwd=password, **args)
+ return cls(host=host, port=port, db=path, user=user, passwd=password, **args)
connectionFromURI = classmethod(connectionFromURI)
def _setAutoCommit(self, conn, auto):
Modified: trunk/SQLObject/sqlobject/sqlite/sqliteconnection.py
===================================================================
--- trunk/SQLObject/sqlobject/sqlite/sqliteconnection.py 2005-02-24 04:18:55 UTC (rev 645)
+++ trunk/SQLObject/sqlobject/sqlite/sqliteconnection.py 2005-02-24 14:05:57 UTC (rev 646)
@@ -22,7 +22,7 @@
DBAPI.__init__(self, **kw)
def connectionFromURI(cls, uri):
- user, password, host, path, args = cls._parseURI(uri)
+ user, password, host, port, path, args = cls._parseURI(uri)
assert host is None, (
"SQLite can only be used locally (with a URI like "
"sqlite:///file or sqlite:/file, not %r)" % uri)
Modified: trunk/SQLObject/sqlobject/sybase/sybaseconnection.py
===================================================================
--- trunk/SQLObject/sqlobject/sybase/sybaseconnection.py 2005-02-24 04:18:55 UTC (rev 645)
+++ trunk/SQLObject/sqlobject/sybase/sybaseconnection.py 2005-02-24 14:05:57 UTC (rev 646)
@@ -33,7 +33,7 @@
DBAPI.__init__(self, **kw)
def connectionFromURI(cls, uri):
- user, password, host, path, args = cls._parseURI(uri)
+ user, password, host, port, path, args = cls._parseURI(uri)
return cls(user=user, passwd=password, host=host or 'localhost',
db=path, **args)
connectionFromURI = classmethod(connectionFromURI)
Modified: trunk/SQLObject/sqlobject/tests/test_parse.py
===================================================================
--- trunk/SQLObject/sqlobject/tests/test_parse.py 2005-02-24 04:18:55 UTC (rev 645)
+++ trunk/SQLObject/sqlobject/tests/test_parse.py 2005-02-24 14:05:57 UTC (rev 646)
@@ -7,44 +7,50 @@
def test_parse():
_parseURI = DBConnection._parseURI
- user, password, host, path, args = _parseURI("mysql://user:passwd@host/database")
+ user, password, host, port, path, args = _parseURI("mysql://user:passwd@host/database")
assert user == "user"
assert password == "passwd"
assert host == "host"
+ assert port is None
assert path == "/database"
assert args == {}
- user, password, host, path, args = _parseURI("mysql://host/database")
- assert user == None
- assert password == None
+ user, password, host, port, path, args = _parseURI("mysql://host/database")
+ assert user is None
+ assert password is None
assert host == "host"
+ assert port is None
assert path == "/database"
assert args == {}
- user, password, host, path, args = _parseURI("postgres://user@host/database")
+ user, password, host, port, path, args = _parseURI("postgres://user@host/database")
assert user == "user"
- assert password == None
+ assert password is None
assert host == "host"
+ assert port is None
assert path == "/database"
assert args == {}
- user, password, host, path, args = _parseURI("postgres://host:5432/database")
- assert user == None
- assert password == None
- assert host == "host:5432"
+ user, password, host, port, path, args = _parseURI("postgres://host:5432/database")
+ assert user is None
+ assert password is None
+ assert host == "host"
+ assert port == 5432
assert path == "/database"
assert args == {}
- user, password, host, path, args = _parseURI("sqlite:///full/path/to/database")
- assert user == None
- assert password == None
- assert host == None
+ user, password, host, port, path, args = _parseURI("sqlite:///full/path/to/database")
+ assert user is None
+ assert password is None
+ assert host is None
+ assert port is None
assert path == "/full/path/to/database"
assert args == {}
- user, password, host, path, args = _parseURI("sqlite:/:memory:")
- assert user == None
- assert password == None
- assert host == None
+ user, password, host, port, path, args = _parseURI("sqlite:/:memory:")
+ assert user is None
+ assert password is None
+ assert host is None
+ assert port is None
assert path == "/:memory:"
assert args == {}
|