]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
added string-based URLS to create connections
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 3 Dec 2005 05:12:56 +0000 (05:12 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 3 Dec 2005 05:12:56 +0000 (05:12 +0000)
lib/sqlalchemy/engine.py
test/testbase.py

index 31bf4fac532c2f604b970db37bca6c5ece643bd4..c90eb6894292f0bc8548faef0d3e4141c29907a3 100644 (file)
@@ -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)
 
index a0425ba7aaee63ad339ebf2bcd833c69c9822e0a..a42cf31bf7330d239cffae09faf287a23cbf143f 100644 (file)
@@ -163,13 +163,15 @@ if (param != '--db'):
     raise "--db <sqlite|postgres|oracle|sqlite_file> 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)