summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/sql.py')
-rw-r--r--lib/sqlalchemy/sql.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py
index a07536bc9..c113edaa3 100644
--- a/lib/sqlalchemy/sql.py
+++ b/lib/sqlalchemy/sql.py
@@ -618,8 +618,14 @@ class ColumnElement(Selectable, CompareMixin):
may correspond to several TableClause-attached columns)."""
primary_key = property(lambda self:getattr(self, '_primary_key', False), doc="primary key flag. indicates if this Column represents part or whole of a primary key.")
- foreign_key = property(lambda self:getattr(self, '_foreign_key', False), doc="foreign key accessor. points to a ForeignKey object which represents a Foreign Key placed on this column's ultimate ancestor.")
+ foreign_keys = property(lambda self:getattr(self, '_foreign_keys', []), doc="foreign key accessor. points to a ForeignKey object which represents a Foreign Key placed on this column's ultimate ancestor.")
columns = property(lambda self:[self], doc="Columns accessor which just returns self, to provide compatibility with Selectable objects.")
+ def _one_fkey(self):
+ if len(self._foreign_keys):
+ return list(self._foreign_keys)[0]
+ else:
+ return None
+ foreign_key = property(_one_fkey)
def _get_orig_set(self):
try:
@@ -731,7 +737,7 @@ class FromClause(Selectable):
return
self._columns = util.OrderedProperties()
self._primary_key = []
- self._foreign_keys = []
+ self._foreign_keys = util.Set()
self._orig_cols = {}
export = self._exportable_columns()
for column in export:
@@ -1077,8 +1083,8 @@ class Join(FromClause):
self._columns[column._label] = column
if column.primary_key:
self._primary_key.append(column)
- if column.foreign_key:
- self._foreign_keys.append(column.foreign_key)
+ for f in column.foreign_keys:
+ self._foreign_keys.add(f)
return column
def _match_primaries(self, primary, secondary):
crit = []
@@ -1252,7 +1258,7 @@ class TableClause(FromClause):
super(TableClause, self).__init__(name)
self.name = self.fullname = name
self._columns = util.OrderedProperties()
- self._foreign_keys = []
+ self._foreign_keys = util.Set()
self._primary_key = []
for c in columns:
self.append_column(c)