From: Mike Bayer Date: Sun, 27 Nov 2005 01:40:03 +0000 (+0000) Subject: supports positional params for mysql - needs to be generalized X-Git-Tag: rel_0_1_0~297 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a284d1e860ae3a92a98592556e94a8aec8ea63f6;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git supports positional params for mysql - needs to be generalized --- diff --git a/test/testbase.py b/test/testbase.py index 9561959c0d..386e903c8c 100644 --- a/test/testbase.py +++ b/test/testbase.py @@ -3,6 +3,7 @@ import StringIO import sqlalchemy.engine as engine import re, sys import sqlalchemy.databases.postgres as postgres +import sqlalchemy.databases.mysql as mysql echo = True db = None @@ -74,10 +75,31 @@ class EngineAssert(object): (query, params) = item if callable(params): params = params() - + + # TODO: standardize this to param styles instaed of checking dbengine types if isinstance(self.engine, postgres.PGSQLEngine): query = re.sub(r':([\w_]+)', r"%(\1)s", query) - + elif isinstance(self.engine, mysql.MySQLEngine): + names = [] + def append_arg(match): + names.append(match.group(1)) + return r"%s" + + query = re.sub(r':([\w_]+)', append_arg, query) + + if isinstance(params, list): + args = [] + for p in params: + l = [] + args.append(l) + for n in names: + l.append(p[n]) + else: + args = [] + for n in names: + args.append(params[n]) + params = args + self.unittest.assert_(statement == query and params == parameters, "Testing for query '%s' params %s, received '%s' with params %s" % (query, repr(params), statement, repr(parameters))) return self.realexec(statement, parameters, **kwargs) @@ -146,7 +168,8 @@ elif DBTYPE == 'sqlite_file': 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) - +elif DBTYPE == 'mysql': + db = engine.create_engine('mysql', {'db':'test', 'host':'127.0.0.1', 'user':'scott'}, echo=echo) db = EngineAssert(db)