From 0f42441edd8269308ec1b3c9936759a289dee826 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 3 Dec 2005 05:12:56 +0000 Subject: [PATCH] added string-based URLS to create connections --- lib/sqlalchemy/engine.py | 10 +++++++++- test/testbase.py | 10 ++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/sqlalchemy/engine.py b/lib/sqlalchemy/engine.py index 31bf4fac53..c90eb68942 100644 --- a/lib/sqlalchemy/engine.py +++ b/lib/sqlalchemy/engine.py @@ -22,7 +22,7 @@ import sqlalchemy.schema as schema import sqlalchemy.pool import sqlalchemy.util as util import sqlalchemy.sql as sql -import StringIO, sys +import StringIO, sys, re import sqlalchemy.types as types import sqlalchemy.databases @@ -36,6 +36,14 @@ def create_engine(name, *args ,**kwargs): *args, **kwargs - sent directly to the specific engine instance as connect arguments, options. """ + m = re.match(r'(\w+)://(.*)', name) + if m is not None: + (name, args) = m.group(1, 2) + opts = {} + def assign(m): + opts[m.group(1)] = m.group(2) + re.sub(r'([^&]+)=([^&]*)', assign, args) + args = [opts] module = getattr(__import__('sqlalchemy.databases.%s' % name).databases, name) return module.engine(*args, **kwargs) diff --git a/test/testbase.py b/test/testbase.py index a0425ba7aa..a42cf31bf7 100644 --- a/test/testbase.py +++ b/test/testbase.py @@ -163,13 +163,15 @@ if (param != '--db'): raise "--db param required" if DBTYPE == 'sqlite': - db = engine.create_engine('sqlite', {'filename':':memory:'}, echo = echo) + db = engine.create_engine('sqlite://filename=:memory:', echo = echo) elif DBTYPE == 'sqlite_file': - db = engine.create_engine('sqlite', {'filename':'querytest.db'}, echo = echo) + db = engine.create_engine('sqlite://filename=querytest.db', echo = echo) elif DBTYPE == 'postgres': - db = engine.create_engine('postgres', {'database':'test', 'host':'127.0.0.1', 'user':'scott', 'password':'tiger'}, echo=echo) + db = engine.create_engine('postgres://database=test&host=127.0.0.1&user=scott&password=tiger', echo=echo) elif DBTYPE == 'mysql': - db = engine.create_engine('mysql', {'db':'test', 'host':'127.0.0.1', 'user':'scott', 'passwd':'tiger'}, echo=echo) + db = engine.create_engine('mysql://db=test&host=127.0.0.1&user=scott&passwd=tiger', echo=echo) +elif DBTYPE == 'oracle': + db = engine.create_engine('oracle://db=test&host=127.0.0.1&user=scott&passwd=tiger', echo=echo) db = EngineAssert(db) -- 2.47.2