From 05ddecb207eb6716bdafa53d70a1547e63fc49e3 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sun, 28 Jun 2009 22:46:08 +0000 Subject: [PATCH] add some goodies to help migrate --- lib/sqlalchemy/schema.py | 14 +++++++++++++- lib/sqlalchemy/sql/compiler.py | 5 +++-- test/sql/test_constraints.py | 5 +++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index d85f36b39e..838daed45b 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -1380,7 +1380,15 @@ class ForeignKeyConstraint(Constraint): if table: self._set_parent(table) - + + @property + def columns(self): + return self._elements.keys() + + @property + def elements(self): + return self._elements.values() + def _set_parent(self, table): super(ForeignKeyConstraint, self)._set_parent(table) for col, fk in self._elements.iteritems(): @@ -2140,6 +2148,10 @@ class DropConstraint(_CreateDropBase): """Represent an ALTER TABLE DROP CONSTRAINT statement.""" __visit_name__ = "drop_constraint" + + def __init__(self, element, cascade=False, **kw): + self.cascade = cascade + super(DropConstraint, self).__init__(element, **kw) def _bind_or_error(schemaitem): bind = schemaitem.bind diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 679187fe61..1a88680478 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -914,9 +914,10 @@ class DDLCompiler(engine.Compiled): def visit_drop_constraint(self, drop): preparer = self.preparer - return "ALTER TABLE %s DROP CONSTRAINT %s" % ( + return "ALTER TABLE %s DROP CONSTRAINT %s%s" % ( self.preparer.format_table(drop.element.table), - self.preparer.format_constraint(drop.element) + self.preparer.format_constraint(drop.element), + " CASCADE" if drop.cascade else "" ) def get_column_specification(self, column, **kwargs): diff --git a/test/sql/test_constraints.py b/test/sql/test_constraints.py index 6188357c35..1ad03f357b 100644 --- a/test/sql/test_constraints.py +++ b/test/sql/test_constraints.py @@ -326,6 +326,11 @@ class ConstraintCompilationTest(TestBase, AssertsCompiledSQL): "ALTER TABLE tbl DROP CONSTRAINT my_test_constraint" ) + self.assert_compile( + schema.DropConstraint(constraint, cascade=True), + "ALTER TABLE tbl DROP CONSTRAINT my_test_constraint CASCADE" + ) + constraint = ForeignKeyConstraint(["b"], ["t2.a"]) t.append_constraint(constraint) self.assert_compile( -- 2.47.3