[Sqlalchemy-commits] [1033] sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy: dev
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-02-25 05:33:08
|
<!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>[1033] sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy: dev</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1033</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-02-24 23:32:54 -0600 (Fri, 24 Feb 2006)</dd> </dl> <h3>Log Message</h3> <pre>dev</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemybranchessql_rearrangementlibsqlalchemyansisqlpy">sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/ansisql.py</a></li> <li><a href="#sqlalchemybranchessql_rearrangementlibsqlalchemyschemapy">sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/schema.py</a></li> <li><a href="#sqlalchemybranchessql_rearrangementlibsqlalchemysqlpy">sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/sql.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemybranchessql_rearrangementlibsqlalchemyansisqlpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/ansisql.py (1032 => 1033)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/ansisql.py 2006-02-25 05:17:47 UTC (rev 1032) +++ sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/ansisql.py 2006-02-25 05:32:54 UTC (rev 1033) </span><span class="lines">@@ -35,7 +35,7 @@ </span><span class="cx"> def dbapi(self): </span><span class="cx"> return None </span><span class="cx"> </span><del>-class ANSICompiler(sql.Compiled): </del><ins>+class ANSICompiler(sql.Compiled, schema.SchemaVisitor): </ins><span class="cx"> """default implementation of Compiled, which compiles ClauseElements into ANSI-compliant SQL strings.""" </span><span class="cx"> def __init__(self, engine, statement, parameters=None, typemap=None, **kwargs): </span><span class="cx"> """constructs a new ANSICompiler object. </span><span class="lines">@@ -152,16 +152,11 @@ </span><span class="cx"> # if we are within a visit to a Select, set up the "typemap" </span><span class="cx"> # for this column which is used to translate result set values </span><span class="cx"> self.typemap.setdefault(column.key.lower(), column.type) </span><del>- if column.table.name is None: </del><ins>+ if column.table is not None and column.table.name is None: </ins><span class="cx"> self.strings[column] = column.name </span><span class="cx"> else: </span><span class="cx"> self.strings[column] = "%s.%s" % (column.table.name, column.name) </span><span class="cx"> </span><del>- def visit_columnclause(self, column): - if column.table is not None and column.table.name is not None: - self.strings[column] = "%s.%s" % (column.table.name, column.text) - else: - self.strings[column] = column.text </del><span class="cx"> </span><span class="cx"> def visit_fromclause(self, fromclause): </span><span class="cx"> self.froms[fromclause] = fromclause.from_name </span><span class="lines">@@ -263,7 +258,6 @@ </span><span class="cx"> # SQLite doesnt like selecting from a subquery where the column </span><span class="cx"> # names look like table.colname, so add a label synonomous with </span><span class="cx"> # the column name </span><del>- print "ALALA", co.text, repr(co.table) </del><span class="cx"> l = co.label(co.text) </span><span class="cx"> l.accept_visitor(self) </span><span class="cx"> inner_columns[self.get_str(l.obj)] = l </span><span class="lines">@@ -358,10 +352,6 @@ </span><span class="cx"> def visit_table(self, table): </span><span class="cx"> self.froms[table] = table.fullname </span><span class="cx"> self.strings[table] = "" </span><del>- - def visit_tableclause(self, table): - self.froms[table] = table.name - self.strings[table] = "" </del><span class="cx"> </span><span class="cx"> def visit_join(self, join): </span><span class="cx"> # TODO: ppl are going to want RIGHT, FULL OUTER and NATURAL joins. </span><span class="lines">@@ -394,8 +384,6 @@ </span><span class="cx"> def visit_insert(self, insert_stmt): </span><span class="cx"> # set up a call for the defaults and sequences inside the table </span><span class="cx"> class DefaultVisitor(schema.SchemaVisitor): </span><del>- def visit_columnclause(s, c): - self.visit_insert_column(c) </del><span class="cx"> def visit_column(s, c): </span><span class="cx"> self.visit_insert_column(c) </span><span class="cx"> def visit_column_default(s, cd): </span><span class="lines">@@ -468,16 +456,13 @@ </span><span class="cx"> else: </span><span class="cx"> parameters = self.parameters.copy() </span><span class="cx"> </span><del>- print "stmt", repr(stmt) </del><span class="cx"> if stmt.parameters is not None: </span><span class="cx"> for k, v in stmt.parameters.iteritems(): </span><del>- print "k", k, "v", repr(v) </del><span class="cx"> parameters.setdefault(k, v) </span><span class="cx"> </span><span class="cx"> # now go thru compiled params, get the Column object for each key </span><span class="cx"> d = {} </span><span class="cx"> for key, value in parameters.iteritems(): </span><del>- print "key", key, "value", repr(value) </del><span class="cx"> if isinstance(key, sql.ColumnClause): </span><span class="cx"> d[key] = value </span><span class="cx"> else: </span></span></pre></div> <a id="sqlalchemybranchessql_rearrangementlibsqlalchemyschemapy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/schema.py (1032 => 1033)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/schema.py 2006-02-25 05:17:47 UTC (rev 1032) +++ sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/schema.py 2006-02-25 05:32:54 UTC (rev 1033) </span><span class="lines">@@ -224,7 +224,7 @@ </span><span class="cx"> column, which generally isnt in column lists. </span><span class="cx"> """ </span><span class="cx"> name = str(name) # in case of incoming unicode </span><del>- super(Column, self).__init__(name, None) </del><ins>+ super(Column, self).__init__(name, None, type) </ins><span class="cx"> self.args = args </span><span class="cx"> self.key = kwargs.pop('key', name) </span><span class="cx"> self._primary_key = kwargs.pop('primary_key', False) </span><span class="lines">@@ -241,8 +241,6 @@ </span><span class="cx"> self.default = ColumnDefault(self.default) </span><span class="cx"> self.default._set_parent(self) </span><span class="cx"> </span><del>- self._init_items(*self.args) - </del><span class="cx"> primary_key = AttrProp('_primary_key') </span><span class="cx"> foreign_key = AttrProp('_foreign_key') </span><span class="cx"> original = property(lambda s: s._orig or s) </span><span class="lines">@@ -337,7 +335,7 @@ </span><span class="cx"> elif self._colspec.table.schema is not None: </span><span class="cx"> return "%s.%s.%s" % (self._colspec.table.schema, self._colspec.table.name, self._colspec.column.key) </span><span class="cx"> else: </span><del>- return "%s.%s" % (self._colspec.table.name, self._colspec.column.key) </del><ins>+ return "%s.%s" % (self._colspec.table.name, self._colspec.key) </ins><span class="cx"> </span><span class="cx"> def references(self, table): </span><span class="cx"> """returns True if the given table is referenced by this ForeignKey.""" </span><span class="lines">@@ -497,7 +495,7 @@ </span><span class="cx"> objects.""" </span><span class="cx"> raise NotImplementedError() </span><span class="cx"> </span><del>-class SchemaVisitor(object): </del><ins>+class SchemaVisitor(sql.ClauseVisitor): </ins><span class="cx"> """base class for an object that traverses across Schema structures.""" </span><span class="cx"> def visit_schema(self, schema): </span><span class="cx"> """visit a generic SchemaItem""" </span></span></pre></div> <a id="sqlalchemybranchessql_rearrangementlibsqlalchemysqlpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/sql.py (1032 => 1033)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/sql.py 2006-02-25 05:17:47 UTC (rev 1032) +++ sqlalchemy/branches/sql_rearrangement/lib/sqlalchemy/sql.py 2006-02-25 05:32:54 UTC (rev 1033) </span><span class="lines">@@ -160,10 +160,10 @@ </span><span class="cx"> """returns a Label object for the given selectable, used in the column list for a select statement.""" </span><span class="cx"> return Label(name, obj) </span><span class="cx"> </span><del>-def column(text, table=None): </del><ins>+def column(text, table=None, type=None): </ins><span class="cx"> """returns a textual column clause, relative to a table. this differs from using straight text </span><span class="cx"> or text() in that the column is treated like a regular column, i.e. gets added to a Selectable's list of columns.""" </span><del>- return ColumnClause(text, table) </del><ins>+ return ColumnClause(text, table, type) </ins><span class="cx"> </span><span class="cx"> def table(name, *columns): </span><span class="cx"> return TableClause(name, *columns) </span><span class="lines">@@ -232,8 +232,8 @@ </span><span class="cx"> class ClauseVisitor(object): </span><span class="cx"> """builds upon SchemaVisitor to define the visiting of SQL statement elements in </span><span class="cx"> addition to Schema elements.""" </span><del>- def visit_columnclause(self, column):pass - def visit_tableclause(self, column):pass </del><ins>+ def visit_column(self, column):pass + def visit_table(self, column):pass </ins><span class="cx"> def visit_fromclause(self, fromclause):pass </span><span class="cx"> def visit_bindparam(self, bindparam):pass </span><span class="cx"> def visit_textclause(self, textclause):pass </span><span class="lines">@@ -952,10 +952,10 @@ </span><span class="cx"> """represents a textual column clause in a SQL statement. ColumnClause operates </span><span class="cx"> in two modes, one where its just any text that will be placed into the select statement, </span><span class="cx"> and "column" mode, where it represents a column attached to a table.""" </span><del>- def __init__(self, text, selectable=None): </del><ins>+ def __init__(self, text, selectable=None, type=None): </ins><span class="cx"> self.key = self.name = self.text = text </span><span class="cx"> self.table = selectable </span><del>- self.type = sqltypes.NullTypeEngine() </del><ins>+ self.type = type or sqltypes.NullTypeEngine() </ins><span class="cx"> def _get_label(self): </span><span class="cx"> if self.table is not None: </span><span class="cx"> return self.table.name + "_" + self.text </span><span class="lines">@@ -964,7 +964,7 @@ </span><span class="cx"> _label = property(_get_label) </span><span class="cx"> default_label = property(lambda s:s._label) </span><span class="cx"> def accept_visitor(self, visitor): </span><del>- visitor.visit_columnclause(self) </del><ins>+ visitor.visit_column(self) </ins><span class="cx"> def _get_from_objects(self): </span><span class="cx"> if self.table is not None: </span><span class="cx"> return [self.table] </span><span class="lines">@@ -1027,7 +1027,7 @@ </span><span class="cx"> oid_column = property(_oid_col) </span><span class="cx"> </span><span class="cx"> def accept_visitor(self, visitor): </span><del>- visitor.visit_tableclause(self) </del><ins>+ visitor.visit_table(self) </ins><span class="cx"> def _exportable_columns(self): </span><span class="cx"> raise NotImplementedError() </span><span class="cx"> def _group_parenthesized(self): </span><span class="lines">@@ -1183,7 +1183,6 @@ </span><span class="cx"> self.is_where = is_where </span><span class="cx"> def visit_compound_select(self, cs): </span><span class="cx"> self.visit_select(cs) </span><del>- # TODO: visit_column, visit_table arent from this module </del><span class="cx"> def visit_column(self, c):pass </span><span class="cx"> def visit_table(self, c):pass </span><span class="cx"> def visit_select(self, select): </span></span></pre> </div> </div> </body> </html> |