summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/schema.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2005-12-02 08:49:45 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2005-12-02 08:49:45 +0000
commit9a205e891d9b63ee83590a20772f3ee22e713398 (patch)
tree97b4668991f9da4e74643bbe38d7bb7715d90460 /lib/sqlalchemy/schema.py
parent4b70825ae175483addf51b0848faa99bff3d7283 (diff)
downloadsqlalchemy-9a205e891d9b63ee83590a20772f3ee22e713398.tar.gz
added functionality to map columns to their aliased versions.
added support for specifying an alias in a relation. added a new relation flag 'selectalias' which causes eagerloader to use a local alias name for its target table, translating columns back to the original non-aliased name as result rows come in.
Diffstat (limited to 'lib/sqlalchemy/schema.py')
-rw-r--r--lib/sqlalchemy/schema.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py
index 3eb68d8b9..527d57023 100644
--- a/lib/sqlalchemy/schema.py
+++ b/lib/sqlalchemy/schema.py
@@ -196,7 +196,11 @@ class Column(SchemaItem):
def _make_proxy(self, selectable, name = None):
"""creates a copy of this Column, initialized the way this Column is"""
- c = Column(name or self.name, self.type, self.foreign_key, self.sequence, key = name or self.key, primary_key = self.primary_key, hidden=self.hidden)
+ if self.foreign_key is None:
+ fk = None
+ else:
+ fk = self.foreign_key.copy()
+ c = Column(name or self.name, self.type, fk, self.sequence, key = name or self.key, primary_key = self.primary_key, hidden=self.hidden)
c.table = selectable
c._orig = self.original
if not c.hidden:
@@ -229,6 +233,16 @@ class ForeignKey(SchemaItem):
return ForeignKey(self._colspec)
else:
return ForeignKey("%s.%s" % (self._colspec.table.name, self._colspec.column.key))
+
+ def references(self, table):
+ """returns True if the given table is referenced by this ForeignKey."""
+ return (
+ # simple test
+ self.column.table is table
+ or
+ # test for an indirect relation via a Selectable
+ table.get_col_by_original(self.column) is not None
+ )
def _init_column(self):
# ForeignKey inits its remote column as late as possible, so tables can