diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-05-13 15:53:18 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-05-13 15:53:18 -0400 |
commit | 14d523265203d21152411b5f3c18843b09b23554 (patch) | |
tree | 7611c05ad118f23df00d69606bc16a553beec2ff /lib/sqlalchemy/schema.py | |
parent | f0fa460791735cd27dc41b1ed154465ea2441be5 (diff) | |
download | sqlalchemy-14d523265203d21152411b5f3c18843b09b23554.tar.gz |
- Added table.add_is_dependent_on(othertable), allows manual
placement of dependency rules between two Table objects
for use within create_all(), drop_all(), sorted_tables.
[ticket:1801]
Diffstat (limited to 'lib/sqlalchemy/schema.py')
-rw-r--r-- | lib/sqlalchemy/schema.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index 168296db6..a2d499f84 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -224,6 +224,7 @@ class Table(SchemaItem, expression.TableClause): self._columns = expression.ColumnCollection() self._set_primary_key(PrimaryKeyConstraint()) self._foreign_keys = util.OrderedSet() + self._extra_dependencies = set() self.ddl_listeners = util.defaultdict(list) self.kwargs = {} if self.schema is not None: @@ -338,6 +339,20 @@ class Table(SchemaItem, expression.TableClause): return self.metadata and self.metadata.bind or None + def add_is_dependent_on(self, table): + """Add a 'dependency' for this Table. + + This is another Table object which must be created + first before this one can, or dropped after this one. + + Usually, dependencies between tables are determined via + ForeignKey objects. However, for other situations that + create dependencies outside of foreign keys (rules, inheriting), + this method can manually establish such a link. + + """ + self._extra_dependencies.add(table) + def append_column(self, column): """Append a ``Column`` to this ``Table``.""" |