diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-01-01 21:08:22 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-01-01 21:08:22 +0000 |
commit | 705f308452b0741747c27ee4edcd75f2ec0e6ae8 (patch) | |
tree | 9f23719ca0098f8d5a933aefc86a8abe32509f80 /lib/sqlalchemy/sql.py | |
parent | 943bb0b0e08fec9bc0ccc784a4dd154783031e8d (diff) | |
download | sqlalchemy-705f308452b0741747c27ee4edcd75f2ec0e6ae8.tar.gz |
rowid_column becomes more like the "order by column". 'default_ordering' flag sent to create_engine enables whether or not the rowid_column on a Table will be None or not. mappers/relations will by default use the rowid_column for ordering if its not None, else theres no default ordering.
still should better define 'default_ordering'/'rowid_column' relationship since its a little kludgy.
Diffstat (limited to 'lib/sqlalchemy/sql.py')
-rw-r--r-- | lib/sqlalchemy/sql.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 79af19cc0..65246cdf2 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -904,10 +904,25 @@ class TableImpl(FromClause): def __init__(self, table): self.table = table self.id = self.table.name - self._rowid_column = schema.Column(self.table.engine.rowid_column_name(), sqltypes.Integer, hidden=True) - self._rowid_column._set_parent(table) - - rowid_column = property(lambda s: s._rowid_column) + + def _rowid_col(self): + if not self.table.engine.default_ordering: + return None + + if not hasattr(self, '_rowid_column'): + if self.table.engine.rowid_column_name() is not None: + self._rowid_column = schema.Column(self.table.engine.rowid_column_name(), sqltypes.Integer, hidden=True) + self._rowid_column._set_parent(self.table) + else: + if len(self.table.primary_key) > 0: + c = self.table.primary_key[0] + else: + c = self.table.columns[self.table.columns.keys()[0]] + self._rowid_column = schema.Column(c.name, c.type, hidden=True) + self._rowid_column._set_parent(self.table) + return self._rowid_column + + rowid_column = property(_rowid_col) engine = property(lambda s: s.table.engine) columns = property(lambda self: self.table.columns) |