]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- [feature] Added support for UniqueConstraint
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 21 Apr 2012 14:26:53 +0000 (10:26 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 21 Apr 2012 14:26:53 +0000 (10:26 -0400)
  in autogenerate, courtesy Atsushi Odagiri

CHANGES
alembic/autogenerate.py
tests/test_autogenerate.py

diff --git a/CHANGES b/CHANGES
index 1e3843a964106861a912531fe5ba365020292a61..23523a0387230f928901346d70badafad5fe0cd2 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+0.3.2
+=====
+- [feature] Added support for UniqueConstraint
+  in autogenerate, courtesy Atsushi Odagiri
+
 0.3.1
 =====
 - [bug] bulk_insert() fixes:
index e12e9e6df4e24eca8619342183d3d7b8f0449a8c..1b0360435288cad9515e64b14b9c18618f113928 100644 (file)
@@ -554,8 +554,11 @@ def _render_check_constraint(constraint, autogen_context):
         }
 
 def _render_unique_constraint(constraint, autogen_context):
-    
-    return "%(prefix)sUniqueConstraint(%(cols)s)" % {
+    opts = []
+    if constraint.name:
+        opts.append(("name", "'%s'" % constraint.name))
+    return "%(prefix)sUniqueConstraint(%(cols)s%(opts)s)" % {
+        'opts':", " + (", ".join("%s=%s" % (k, v) for k, v in opts)) if opts else "",
         'cols': ",".join(["'%s'" % c.name for c in constraint.columns]),
             "prefix":_sqlalchemy_autogenerate_prefix(autogen_context)
         }
index 0e97fdf82aec8d3be56425917c43b3c7de7780b1..5d4a06f0db26a8a6ea140d61354640ccabcd59a7 100644 (file)
@@ -1,5 +1,6 @@
 from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \
-    Numeric, CHAR, ForeignKey, DATETIME, TypeDecorator, CheckConstraint, Unicode
+    Numeric, CHAR, ForeignKey, DATETIME, TypeDecorator, CheckConstraint, Unicode,\
+    UniqueConstraint
 from sqlalchemy.types import NULLTYPE
 from sqlalchemy.engine.reflection import Inspector
 from alembic import autogenerate
@@ -368,10 +369,12 @@ class AutogenRenderTest(TestCase):
         m = MetaData()
         t = Table('test', m,
             Column('id', Integer, primary_key=True),
-            Column('name', Unicode(255), unique=True),
+            Column('name', Unicode(255)),
             Column("address_id", Integer, ForeignKey("address.id")),
             Column("timestamp", DATETIME, server_default="NOW()"),
             Column("amount", Numeric(5, 2)),
+            UniqueConstraint("name", name="uq_name"),
+            UniqueConstraint("timestamp"),
         )
         eq_ignore_whitespace(
             autogenerate._add_table(t, self.autogen_context),
@@ -385,7 +388,8 @@ class AutogenRenderTest(TestCase):
             "sa.Column('amount', sa.Numeric(precision=5, scale=2), nullable=True),"
             "sa.ForeignKeyConstraint(['address_id'], ['address.id'], ),"
             "sa.PrimaryKeyConstraint('id'),"
-            "sa.UniqueConstraint('name')"
+            "sa.UniqueConstraint('name', name='uq_name'),"
+            "sa.UniqueConstraint('timestamp')"
             ")"
         )