[Sqlalchemy-commits] [1381] sqlalchemy/branches/schema/test: connection query format moves to *multi
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-05-03 17:31:28
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[1381] sqlalchemy/branches/schema/test: connection query format moves to *multiparams, **params</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1381</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-05-03 12:31:15 -0500 (Wed, 03 May 2006)</dd> </dl> <h3>Log Message</h3> <pre>connection query format moves to *multiparams, **params</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemybranchesschemalibsqlalchemyenginebasepy">sqlalchemy/branches/schema/lib/sqlalchemy/engine/base.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemyenginedefaultpy">sqlalchemy/branches/schema/lib/sqlalchemy/engine/default.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemyschemapy">sqlalchemy/branches/schema/lib/sqlalchemy/schema.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemysqlpy">sqlalchemy/branches/schema/lib/sqlalchemy/sql.py</a></li> <li><a href="#sqlalchemybranchesschematestquerypy">sqlalchemy/branches/schema/test/query.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemybranchesschemalibsqlalchemyenginebasepy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/engine/base.py (1380 => 1381)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/engine/base.py 2006-05-03 17:08:46 UTC (rev 1380) +++ sqlalchemy/branches/schema/lib/sqlalchemy/engine/base.py 2006-05-03 17:31:15 UTC (rev 1381) </span><span class="lines">@@ -115,11 +115,11 @@ </span><span class="cx"> The pre_exec and post_exec methods will be called for compiled statements, afterwhich </span><span class="cx"> it is expected that the various methods last_inserted_ids, last_inserted_params, etc. </span><span class="cx"> will contain appropriate values, if applicable.""" </span><del>- def pre_exec(self, engine, proxy, compiled, parameters, **kwargs): </del><ins>+ def pre_exec(self, engine, proxy, compiled, parameters): </ins><span class="cx"> """called before an execution of a compiled statement. proxy is a callable that </span><span class="cx"> takes a string statement and a bind parameter list/dictionary.""" </span><span class="cx"> raise NotImplementedError() </span><del>- def post_exec(self, engine, proxy, compiled, parameters, **kwargs): </del><ins>+ def post_exec(self, engine, proxy, compiled, parameters): </ins><span class="cx"> """called after the execution of a compiled statement. proxy is a callable that </span><span class="cx"> takes a string statement and a bind parameter list/dictionary.""" </span><span class="cx"> raise NotImplementedError() </span><span class="lines">@@ -191,29 +191,35 @@ </span><span class="cx"> return row[0] </span><span class="cx"> else: </span><span class="cx"> return None </span><del>- def execute(self, object, parameters=None, **kwargs): - return Connection.executors[type(object).__mro__[-2]](self, object, parameters, **kwargs) - def execute_text(self, statement, parameters, **kwargs): - cursor = self._execute_raw(statement, parameters, **kwargs) </del><ins>+ def execute(self, object, *multiparams, **params): + return Connection.executors[type(object).__mro__[-2]](self, object, *multiparams, **params) + def execute_default(self, default, **kwargs): + return default.accept_schema_visitor(self.engine.dialect.defaultrunner(self.engine, self.proxy, **kwargs)) + def execute_text(self, statement, *multiparams, **params): + cursor = self._execute_raw(statement, self._conv_params(*multiparams, **params)) </ins><span class="cx"> return ResultProxy(self.engine, self, cursor) </span><del>- def execute_clauseelement(self, elem, parameters, **kwargs): - # TODO: get this into ClauseElement - executemany = parameters is not None and (isinstance(parameters, list) or isinstance(parameters, tuple)) </del><ins>+ def _conv_params(self, *multiparams, **params): + if len(multiparams) == 0: + return params + elif len(multiparams) == 1: + return multiparams[0] + else: + return multiparams + def execute_clauseelement(self, elem, *multiparams, **params): + executemany = len(multiparams) > 0 </ins><span class="cx"> if executemany: </span><del>- param = parameters[0] </del><ins>+ param = multiparams[0] </ins><span class="cx"> else: </span><del>- param = parameters - return self.execute_compiled(elem.compile(engine=self.engine, parameters=param, **kwargs), parameters, **kwargs) - def execute_default(self, default, parameters=None, **kwargs): - return default.accept_schema_visitor(self.engine.dialect.defaultrunner(self.engine, self.proxy, **kwargs)) - def execute_compiled(self, compiled, parameters, **kwargs): </del><ins>+ param = params + return self.execute_compiled(elem.compile(engine=self.engine, parameters=param), *multiparams, **params) + def execute_compiled(self, compiled, *multiparams, **params): </ins><span class="cx"> """executes a sql.Compiled object.""" </span><span class="cx"> cursor = self.connection.cursor() </span><del>- executemany = parameters is not None and (isinstance(parameters, list) or isinstance(parameters, tuple)) </del><ins>+ executemany = len(multiparams) > 0 </ins><span class="cx"> if executemany: </span><del>- parameters = [compiled.get_params(**m) for m in parameters] - elif parameters is not None: - parameters = compiled.get_params(**parameters) </del><ins>+ parameters = [compiled.get_params(**m) for m in multiparams] + elif len(params): + parameters = compiled.get_params(**params) </ins><span class="cx"> else: </span><span class="cx"> parameters = compiled.get_params() </span><span class="cx"> def proxy(statement=None, parameters=None): </span><span class="lines">@@ -224,9 +230,9 @@ </span><span class="cx"> self._execute_raw(statement, parameters, cursor=cursor, context=context) </span><span class="cx"> return cursor </span><span class="cx"> context = self.engine.dialect.create_execution_context() </span><del>- context.pre_exec(self.engine, proxy, compiled, parameters, **kwargs) </del><ins>+ context.pre_exec(self.engine, proxy, compiled, parameters) </ins><span class="cx"> proxy(str(compiled), parameters) </span><del>- context.post_exec(self.engine, proxy, compiled, parameters, **kwargs) </del><ins>+ context.post_exec(self.engine, proxy, compiled, parameters) </ins><span class="cx"> return ResultProxy(self.engine, self, cursor, context, typemap=compiled.typemap) </span><span class="cx"> </span><span class="cx"> # poor man's multimethod/generic function thingy </span><span class="lines">@@ -387,13 +393,13 @@ </span><span class="cx"> if connection is None: </span><span class="cx"> conn.close() </span><span class="cx"> </span><del>- def execute(self, *args, **kwargs): </del><ins>+ def execute(self, statement, *multiparams, **params): </ins><span class="cx"> connection = self.contextual_connect(close_with_result=True) </span><del>- return connection.execute(*args, **kwargs) </del><ins>+ return connection.execute(statement, *multiparams, **params) </ins><span class="cx"> </span><del>- def execute_compiled(self, compiled, parameters, **kwargs): </del><ins>+ def execute_compiled(self, compiled, *multiparams, **params): </ins><span class="cx"> connection = self.contextual_connect(close_with_result=True) </span><del>- return connection.execute_compiled(compiled, parameters, **kwargs) </del><ins>+ return connection.execute_compiled(compiled, *multiparams, **params) </ins><span class="cx"> </span><span class="cx"> def compiler(self, statement, parameters, **kwargs): </span><span class="cx"> return self.dialect.compiler(statement, parameters, engine=self, **kwargs) </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemyenginedefaultpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/engine/default.py (1380 => 1381)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/engine/default.py 2006-05-03 17:08:46 UTC (rev 1380) +++ sqlalchemy/branches/schema/lib/sqlalchemy/engine/default.py 2006-05-03 17:31:15 UTC (rev 1381) </span><span class="lines">@@ -137,9 +137,9 @@ </span><span class="cx"> class DefaultExecutionContext(base.ExecutionContext): </span><span class="cx"> def __init__(self, dialect): </span><span class="cx"> self.dialect = dialect </span><del>- def pre_exec(self, engine, proxy, compiled, parameters, **kwargs): - self._process_defaults(engine, proxy, compiled, parameters, **kwargs) - def post_exec(self, engine, proxy, compiled, parameters, **kwargs): </del><ins>+ def pre_exec(self, engine, proxy, compiled, parameters): + self._process_defaults(engine, proxy, compiled, parameters) + def post_exec(self, engine, proxy, compiled, parameters): </ins><span class="cx"> pass </span><span class="cx"> def get_rowcount(self, cursor): </span><span class="cx"> if hasattr(self, '_rowcount'): </span><span class="lines">@@ -156,7 +156,7 @@ </span><span class="cx"> return self._last_updated_params </span><span class="cx"> def lastrow_has_defaults(self): </span><span class="cx"> return self._lastrow_has_defaults </span><del>- def _process_defaults(self, engine, proxy, compiled, parameters, **kwargs): </del><ins>+ def _process_defaults(self, engine, proxy, compiled, parameters): </ins><span class="cx"> """INSERT and UPDATE statements, when compiled, may have additional columns added to their </span><span class="cx"> VALUES and SET lists corresponding to column defaults/onupdates that are present on the </span><span class="cx"> Table object (i.e. ColumnDefault, Sequence, PassiveDefault). This method pre-execs those </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemyschemapy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/schema.py (1380 => 1381)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/schema.py 2006-05-03 17:08:46 UTC (rev 1380) +++ sqlalchemy/branches/schema/lib/sqlalchemy/schema.py 2006-05-03 17:31:15 UTC (rev 1381) </span><span class="lines">@@ -399,6 +399,8 @@ </span><span class="cx"> "schema.tablename.columnname" """ </span><span class="cx"> self._colspec = column </span><span class="cx"> self._column = None </span><ins>+ if isinstance(column, unicode): + column = str(column) </ins><span class="cx"> </span><span class="cx"> def __repr__(self): </span><span class="cx"> return "ForeignKey(%s)" % repr(self._get_colspec()) </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemysqlpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/sql.py (1380 => 1381)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/sql.py 2006-05-03 17:08:46 UTC (rev 1380) +++ sqlalchemy/branches/schema/lib/sqlalchemy/sql.py 2006-05-03 17:31:15 UTC (rev 1381) </span><span class="lines">@@ -349,13 +349,10 @@ </span><span class="cx"> </span><span class="cx"> def execute(self, *multiparams, **params): </span><span class="cx"> """executes this compiled object using the AbstractEngine it is bound to.""" </span><del>- if len(multiparams): - params = multiparams - </del><span class="cx"> e = self.engine </span><span class="cx"> if e is None: </span><span class="cx"> raise InvalidRequestError("This Compiled object is not bound to any engine.") </span><del>- return e.execute_compiled(self, params) </del><ins>+ return e.execute_compiled(self, *multiparams, **params) </ins><span class="cx"> </span><span class="cx"> def scalar(self, *multiparams, **params): </span><span class="cx"> """executes this compiled object via the execute() method, then </span></span></pre></div> <a id="sqlalchemybranchesschematestquerypy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/test/query.py (1380 => 1381)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/test/query.py 2006-05-03 17:08:46 UTC (rev 1380) +++ sqlalchemy/branches/schema/test/query.py 2006-05-03 17:31:15 UTC (rev 1381) </span><span class="lines">@@ -111,14 +111,6 @@ </span><span class="cx"> </span><span class="cx"> print repr(self.users.select().execute().fetchall()) </span><span class="cx"> </span><del>- def testtransaction(self): - def dostuff(): - self.users.insert().execute(user_id = 7, user_name = 'john') - self.users.insert().execute(user_id = 8, user_name = 'jack') - - db.transaction(dostuff) - print repr(self.users.select().execute().fetchall()) - </del><span class="cx"> def testselectlimit(self): </span><span class="cx"> self.users.insert().execute(user_id=1, user_name='john') </span><span class="cx"> self.users.insert().execute(user_id=2, user_name='jack') </span></span></pre> </div> </div> </body> </html> |