Maybe _parseURI should use urllib.url2pathname? That would still be mildly suboptimal, as url2pathname doesn't accept the common form '///C:/a/b/...'. But that's a stdlib issue.
Incidentally, while we're on the topic of URIs, I'd like to move all this URI parsing stuff into a library that doesn't have SQLObject dependencies, so that other people can use the same syntax for defining DB-API connections in any system. Since there's all sort of annoying aspects to URI parsing (many of which probably would have been avoided if I had used urllib from the start :( ), it seems like such a library would be useful. Such a library would probably produce a connection function and keyword parameters, so that actual connection creation could be held off until after parsing, i.e.:
# in dburi.py: def uri_connect(uri): func, args, kwargs = uri_parse('...') return func(*args, **kw)
module_aliases = {
'pgsql': 'psycopg',
'mysql': 'MySQLdb',
# ...
}def uri_parse(uri):
module_name = uri.split(':', 1)
module_name = module_aliases.get(module_name.lower(), module_name)
module = __import__(module_name)
if hasattr(module, 'uri_parse'):
return module.uri_parse(uri)
elif globals().has_key('%s_uri_parse' % module_name):
return globals()['%s_uri_parse' % module_name](uri, module)
else:
return generic_uri_parse(uri, module)Then we'll start implementing parsers for backward compatibility, but perhaps upstream driver authors can start including their own uri_parse functions.
Well, the one missing part of this is that it would also be nice to construct a URI from an already-existing connection object, and to store the original URI if that's how that connection object was originally created.
-- Ian Bicking / [EMAIL PROTECTED] / http://blog.ianbicking.org _______________________________________________ DB-SIG maillist - [email protected] http://mail.python.org/mailman/listinfo/db-sig
