mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-13 04:07:20 -04:00
oid oid oid orderby lala
This commit is contained in:
@@ -486,6 +486,7 @@ class Mapper(object):
|
||||
|
||||
def _compile(self, whereclause = None, order_by = None, **options):
|
||||
statement = sql.select([self.table], whereclause, order_by = order_by)
|
||||
statement.order_by(self.primarytable.rowid_column)
|
||||
# plugin point
|
||||
for key, value in self.props.iteritems():
|
||||
value.setup(key, statement, **options)
|
||||
@@ -1024,8 +1025,10 @@ class EagerLoader(PropertyLoader):
|
||||
print self.target.name
|
||||
print str(self.primaryjoin)
|
||||
statement._outerjoin = sql.outerjoin(towrap, self.secondary, self.primaryjoin).outerjoin(self.target, self.secondaryjoin)
|
||||
statement.order_by(self.secondary.rowid_column)
|
||||
else:
|
||||
statement._outerjoin = towrap.outerjoin(self.target, self.primaryjoin)
|
||||
statement.order_by(self.target.rowid_column)
|
||||
|
||||
statement.append_from(statement._outerjoin)
|
||||
statement.append_column(self.target)
|
||||
|
||||
@@ -124,6 +124,7 @@ class Column(SchemaItem):
|
||||
self.key = kwargs.get('key', name)
|
||||
self.primary_key = kwargs.get('primary_key', False)
|
||||
self.nullable = kwargs.get('nullable', not self.primary_key)
|
||||
self.hidden = kwargs.get('hidden', False)
|
||||
self.foreign_key = None
|
||||
self.sequence = None
|
||||
self._orig = None
|
||||
@@ -132,9 +133,10 @@ class Column(SchemaItem):
|
||||
engine = property(lambda s: s.table.engine)
|
||||
|
||||
def _set_parent(self, table):
|
||||
table.columns[self.key] = self
|
||||
if self.primary_key:
|
||||
table.primary_keys.append(self)
|
||||
if not self.hidden:
|
||||
table.columns[self.key] = self
|
||||
if self.primary_key:
|
||||
table.primary_keys.append(self)
|
||||
self.table = table
|
||||
if self.table.engine is not None:
|
||||
self.type = self.table.engine.type_descriptor(self.type)
|
||||
|
||||
@@ -509,7 +509,8 @@ class Join(Selectable):
|
||||
# TODO: if no onclause, do NATURAL JOIN
|
||||
self.onclause = onclause
|
||||
self.isouter = isouter
|
||||
|
||||
self.rowid_column = self.left.rowid_column
|
||||
|
||||
primary_keys = property (lambda self: [c for c in self.left.columns if c.primary_key] + [c for c in self.right.columns if c.primary_key])
|
||||
|
||||
|
||||
@@ -550,6 +551,7 @@ class Alias(Selectable):
|
||||
self.name = alias
|
||||
self.id = self.name
|
||||
self.count = 0
|
||||
self.rowid_column = self.selectable.rowid_column._make_proxy(self)
|
||||
for co in selectable.columns:
|
||||
co._make_proxy(self)
|
||||
|
||||
@@ -622,9 +624,8 @@ class TableImpl(Selectable):
|
||||
def __init__(self, table):
|
||||
self.table = table
|
||||
self.id = self.table.name
|
||||
self.rowid_column = schema.Column(self.table.engine.rowid_column_name(), types.Integer)
|
||||
self.rowid_column = schema.Column(self.table.engine.rowid_column_name(), types.Integer, hidden=True)
|
||||
self.rowid_column._set_parent(table)
|
||||
del self.table.c[self.rowid_column.key]
|
||||
|
||||
def get_from_text(self):
|
||||
return self.table.name
|
||||
@@ -772,7 +773,11 @@ class Select(Selectable):
|
||||
visitor.visit_select(self)
|
||||
|
||||
def order_by(self, *clauses):
|
||||
self.append_clause("ORDER BY", ClauseList(*clauses))
|
||||
if not hasattr(self, 'order_by_clause'):
|
||||
self.order_by_clause = ClauseList(*clauses)
|
||||
self.append_clause("ORDER BY", self.order_by_clause)
|
||||
else:
|
||||
self.order_by_clause.clauses += clauses
|
||||
|
||||
def select(self, whereclauses = None, **params):
|
||||
return select([self], whereclauses, **params)
|
||||
|
||||
+1
-1
@@ -308,7 +308,7 @@ class EagerTest(MapperSuperTest):
|
||||
m = mapper(Item, items, properties = dict(
|
||||
keywords = relation(Keyword, keywords, itemkeywords, lazy = False),
|
||||
))
|
||||
l = m.select(order_by=[items.c.item_id, keywords.c.keyword_id])
|
||||
l = m.select()
|
||||
self.assert_result(l, Item,
|
||||
{'item_id' : 1, 'keywords' : (Keyword, [{'keyword_id' : 2}, {'keyword_id' : 4}, {'keyword_id' : 6}])},
|
||||
{'item_id' : 2, 'keywords' : (Keyword, [{'keyword_id' : 2, 'name':'red'}, {'keyword_id' : 7, 'name':'square'}, {'keyword_id' : 5, 'name':'small'}])},
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@ __ALL__ = ['db', 'users', 'addresses', 'orders', 'orderitems', 'keywords', 'item
|
||||
|
||||
ECHO = testbase.echo
|
||||
|
||||
#DBTYPE = 'sqlite_memory'
|
||||
DBTYPE = 'postgres'
|
||||
DBTYPE = 'sqlite_memory'
|
||||
#DBTYPE = 'postgres'
|
||||
#DBTYPE = 'sqlite_file'
|
||||
|
||||
if DBTYPE == 'sqlite_memory':
|
||||
|
||||
Reference in New Issue
Block a user