]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
add some goodies to help migrate
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 28 Jun 2009 22:46:08 +0000 (22:46 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 28 Jun 2009 22:46:08 +0000 (22:46 +0000)
lib/sqlalchemy/schema.py
lib/sqlalchemy/sql/compiler.py
test/sql/test_constraints.py

index d85f36b39ed152ef8174c5b838fba7fe0bb32844..838daed45ba5da4138cda66d2e07e7484a0369fd 100644 (file)
@@ -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
index 679187fe61ed57122b1211cd9710c13276f3d627..1a88680478fa9888f0b1603ff2d092ee395fb4ec 100644 (file)
@@ -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):
index 6188357c3596a532989d45344d4def4f77402aa1..1ad03f357bd6bbc2b927e3b7325b9151fd6d8df1 100644 (file)
@@ -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(