[Sqlalchemy-commits] [1440] sqlalchemy/branches/schema/lib/sqlalchemy: made instance variables of Tr
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-05-11 20:42:35
|
<!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>[1440] sqlalchemy/branches/schema/lib/sqlalchemy: made instance variables of Transaction private</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1440</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-05-11 15:42:22 -0500 (Thu, 11 May 2006)</dd> </dl> <h3>Log Message</h3> <pre>made instance variables of Transaction private deprecated engine_impl in types switched some engine dependencies in ansisql added transaction() back to ComposedSQLEngine</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemybranchesschemalibsqlalchemyansisqlpy">sqlalchemy/branches/schema/lib/sqlalchemy/ansisql.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemyenginebasepy">sqlalchemy/branches/schema/lib/sqlalchemy/engine/base.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemysqlpy">sqlalchemy/branches/schema/lib/sqlalchemy/sql.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemysql_utilpy">sqlalchemy/branches/schema/lib/sqlalchemy/sql_util.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemytypespy">sqlalchemy/branches/schema/lib/sqlalchemy/types.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemybranchesschemalibsqlalchemyansisqlpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/ansisql.py (1439 => 1440)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/ansisql.py 2006-05-11 20:12:49 UTC (rev 1439) +++ sqlalchemy/branches/schema/lib/sqlalchemy/ansisql.py 2006-05-11 20:42:22 UTC (rev 1440) </span><span class="lines">@@ -191,7 +191,7 @@ </span><span class="cx"> self.strings[index] = index.name </span><span class="cx"> </span><span class="cx"> def visit_typeclause(self, typeclause): </span><del>- self.strings[typeclause] = typeclause.type.engine_impl(self.engine).get_col_spec() </del><ins>+ self.strings[typeclause] = typeclause.type.dialect_impl(self.dialect).get_col_spec() </ins><span class="cx"> </span><span class="cx"> def visit_textclause(self, textclause): </span><span class="cx"> if textclause.parens and len(textclause.text): </span><span class="lines">@@ -626,10 +626,15 @@ </span><span class="cx"> if isinstance(column.default.arg, str): </span><span class="cx"> return repr(column.default.arg) </span><span class="cx"> else: </span><del>- return str(column.default.arg.compile(self.engine)) </del><ins>+ return str(self._compile(column.default.arg, None)) </ins><span class="cx"> else: </span><span class="cx"> return None </span><span class="cx"> </span><ins>+ def _compile(self, tocompile, parameters): + compiler = self.engine.dialect.compiler(tocompile, parameters) + compiler.compile() + return compiler + </ins><span class="cx"> def visit_column(self, column): </span><span class="cx"> pass </span><span class="cx"> </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemyenginebasepy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/engine/base.py (1439 => 1440)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/engine/base.py 2006-05-11 20:12:49 UTC (rev 1439) +++ sqlalchemy/branches/schema/lib/sqlalchemy/engine/base.py 2006-05-11 20:42:22 UTC (rev 1440) </span><span class="lines">@@ -162,6 +162,7 @@ </span><span class="cx"> self.__transaction = None </span><span class="cx"> self.__close_with_result = close_with_result </span><span class="cx"> engine = property(lambda s:s.__engine, doc="The Engine with which this Connection is associated (read only)") </span><ins>+ connection = property(lambda s:s.__connection, doc="The underlying DBAPI connection managed by this Connection.") </ins><span class="cx"> should_close_with_result = property(lambda s:s.__close_with_result, doc="Indicates if this Connection should be closed when a corresponding ResultProxy is closed; this is essentially an auto-release mode.") </span><span class="cx"> def _create_transaction(self, parent): </span><span class="cx"> return Transaction(self, parent) </span><span class="lines">@@ -320,46 +321,42 @@ </span><span class="cx"> class Transaction(object): </span><span class="cx"> """represents a Transaction in progress""" </span><span class="cx"> def __init__(self, connection, parent): </span><del>- self.connection = connection - self.parent = parent or self - self.is_active = True - if self.parent is self: - self.connection._begin_impl() </del><ins>+ self.__connection = connection + self.__parent = parent or self + self.__is_active = True + if self.__parent is self: + self.__connection._begin_impl() </ins><span class="cx"> def rollback(self): </span><del>- if not self.parent.is_active: </del><ins>+ if not self.__parent.__is_active: </ins><span class="cx"> raise exceptions.InvalidRequestError("This transaction is inactive") </span><del>- if self.parent is self: - self.connection._rollback_impl() - self.is_active = False </del><ins>+ if self.__parent is self: + self.__connection._rollback_impl() + self.__is_active = False </ins><span class="cx"> else: </span><del>- self.parent.rollback() </del><ins>+ self.__parent.rollback() </ins><span class="cx"> def commit(self): </span><del>- if not self.parent.is_active: </del><ins>+ if not self.__parent.__is_active: </ins><span class="cx"> raise exceptions.InvalidRequestError("This transaction is inactive") </span><del>- if self.parent is self: - self.connection._commit_impl() - self.is_active = False </del><ins>+ if self.__parent is self: + self.__connection._commit_impl() + self.__is_active = False </ins><span class="cx"> </span><span class="cx"> class ComposedSQLEngine(sql.Engine): </span><span class="cx"> """ </span><span class="cx"> Connects a ConnectionProvider, a Dialect and a CompilerFactory together to </span><span class="cx"> provide a default implementation of SchemaEngine. </span><span class="cx"> """ </span><del>- </del><span class="cx"> def __init__(self, connection_provider, dialect, echo=False, logger=None, **kwargs): </span><span class="cx"> self.connection_provider = connection_provider </span><span class="cx"> self.dialect=dialect </span><span class="cx"> self.echo = echo </span><span class="cx"> self.logger = logger or util.Logger(origin='engine') </span><span class="cx"> </span><ins>+ name = property(lambda s:sys.modules[s.dialect.__module__].descriptor()['name']) + engine = property(lambda s:s) </ins><span class="cx"> </span><del>- def _get_name(self): - return sys.modules[self.dialect.__module__].descriptor()['name'] - name = property(_get_name) - engine = property(lambda s:s) </del><span class="cx"> def dispose(self): </span><span class="cx"> self.connection_provider.dispose() </span><del>- </del><span class="cx"> def create(self, entity, connection=None, **kwargs): </span><span class="cx"> """creates a table or index within this engine's database connection given a schema.Table object.""" </span><span class="cx"> self._run_visitor(self.dialect.schemagenerator, entity, connection=connection, **kwargs) </span><span class="lines">@@ -367,7 +364,7 @@ </span><span class="cx"> """drops a table or index within this engine's database connection given a schema.Table object.""" </span><span class="cx"> self._run_visitor(self.dialect.schemadropper, entity, connection=connection, **kwargs) </span><span class="cx"> def execute_default(self, default, **kwargs): </span><del>- connection = self.contextual_connect(close_with_result=False) </del><ins>+ connection = self.contextual_connect() </ins><span class="cx"> try: </span><span class="cx"> return connection.execute_default(default, **kwargs) </span><span class="cx"> finally: </span><span class="lines">@@ -382,7 +379,7 @@ </span><span class="cx"> </span><span class="cx"> def _run_visitor(self, visitorcallable, element, connection=None, **kwargs): </span><span class="cx"> if connection is None: </span><del>- conn = self.contextual_connect(close_with_result=False) </del><ins>+ conn = self.contextual_connect() </ins><span class="cx"> else: </span><span class="cx"> conn = connection </span><span class="cx"> try: </span><span class="lines">@@ -391,16 +388,34 @@ </span><span class="cx"> if connection is None: </span><span class="cx"> conn.close() </span><span class="cx"> </span><del>- def run_callable(self, callable_, connection=None): </del><ins>+ def transaction(self, callable_, connection=None, *args, **kwargs): </ins><span class="cx"> if connection is None: </span><del>- conn = self.contextual_connect(close_with_result=False) </del><ins>+ conn = self.contextual_connect() </ins><span class="cx"> else: </span><span class="cx"> conn = connection </span><span class="cx"> try: </span><del>- return callable_(conn) </del><ins>+ trans = conn.begin() + try: + ret = callable_(conn, *args, **kwargs) + trans.commit() + return ret + except: + trans.rollback() + raise </ins><span class="cx"> finally: </span><span class="cx"> if connection is None: </span><span class="cx"> conn.close() </span><ins>+ + def run_callable(self, callable_, connection=None, *args, **kwargs): + if connection is None: + conn = self.contextual_connect() + else: + conn = connection + try: + return callable_(conn, *args, **kwargs) + finally: + if connection is None: + conn.close() </ins><span class="cx"> </span><span class="cx"> def execute(self, statement, *multiparams, **params): </span><span class="cx"> connection = self.contextual_connect(close_with_result=True) </span><span class="lines">@@ -425,7 +440,7 @@ </span><span class="cx"> def reflecttable(self, table, connection=None): </span><span class="cx"> """given a Table object, reflects its columns and properties from the database.""" </span><span class="cx"> if connection is None: </span><del>- conn = self.contextual_connect(close_with_result=False) </del><ins>+ conn = self.contextual_connect() </ins><span class="cx"> else: </span><span class="cx"> conn = connection </span><span class="cx"> try: </span><span class="lines">@@ -495,7 +510,6 @@ </span><span class="cx"> if self.props.setdefault(colname, rec) is not rec: </span><span class="cx"> self.props[colname] = (ResultProxy.AmbiguousColumn(colname), 0) </span><span class="cx"> self.keys.append(colname) </span><del>- #print "COLNAME", colname </del><span class="cx"> self.props[i] = rec </span><span class="cx"> i+=1 </span><span class="cx"> def close(self): </span><span class="lines">@@ -507,7 +521,6 @@ </span><span class="cx"> if isinstance(key, sql.ColumnElement): </span><span class="cx"> try: </span><span class="cx"> rec = self.props[key._label.lower()] </span><del>- #print "GOT IT FROM LABEL FOR ", key._label </del><span class="cx"> except KeyError: </span><span class="cx"> try: </span><span class="cx"> rec = self.props[key.key.lower()] </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemysqlpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/sql.py (1439 => 1440)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/sql.py 2006-05-11 20:12:49 UTC (rev 1439) +++ sqlalchemy/branches/schema/lib/sqlalchemy/sql.py 2006-05-11 20:42:22 UTC (rev 1440) </span><span class="lines">@@ -483,7 +483,7 @@ </span><span class="cx"> </span><span class="cx"> if compiler is None: </span><span class="cx"> import sqlalchemy.ansisql as ansisql </span><del>- compiler = ansisql.ANSIDialect().compiler(self, parameters=parameters, engine=engine) </del><ins>+ compiler = ansisql.ANSIDialect().compiler(self, parameters=parameters) </ins><span class="cx"> compiler.compile() </span><span class="cx"> return compiler </span><span class="cx"> </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemysql_utilpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/sql_util.py (1439 => 1440)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/sql_util.py 2006-05-11 20:12:49 UTC (rev 1439) +++ sqlalchemy/branches/schema/lib/sqlalchemy/sql_util.py 2006-05-11 20:42:22 UTC (rev 1440) </span><span class="lines">@@ -7,10 +7,8 @@ </span><span class="cx"> class TableCollection(object): </span><span class="cx"> def __init__(self): </span><span class="cx"> self.tables = [] </span><del>- </del><span class="cx"> def add(self, table): </span><span class="cx"> self.tables.append(table) </span><del>- </del><span class="cx"> def sort(self, reverse=False ): </span><span class="cx"> import sqlalchemy.orm.topological </span><span class="cx"> tuples = [] </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemytypespy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/types.py (1439 => 1440)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/types.py 2006-05-11 20:12:49 UTC (rev 1439) +++ sqlalchemy/branches/schema/lib/sqlalchemy/types.py 2006-05-11 20:42:22 UTC (rev 1440) </span><span class="lines">@@ -32,6 +32,7 @@ </span><span class="cx"> def __init__(self, *args, **params): </span><span class="cx"> pass </span><span class="cx"> def engine_impl(self, engine): </span><ins>+ """deprecated; call dialect_impl with a dialect directly.""" </ins><span class="cx"> return self.dialect_impl(engine.dialect) </span><span class="cx"> def dialect_impl(self, dialect): </span><span class="cx"> try: </span><span class="lines">@@ -48,9 +49,9 @@ </span><span class="cx"> impl = property(_get_impl, _set_impl) </span><span class="cx"> def get_col_spec(self): </span><span class="cx"> raise NotImplementedError() </span><del>- def convert_bind_param(self, value, engine): </del><ins>+ def convert_bind_param(self, value, dialect): </ins><span class="cx"> return value </span><del>- def convert_result_value(self, value, engine): </del><ins>+ def convert_result_value(self, value, dialect): </ins><span class="cx"> return value </span><span class="cx"> def adapt(self, cls): </span><span class="cx"> return cls() </span></span></pre> </div> </div> </body> </html> |