]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
uniqueconstraint
authorAtsushi Odagiri <aodagx@gmail.com>
Sat, 21 Apr 2012 04:06:49 +0000 (21:06 -0700)
committerAtsushi Odagiri <aodagx@gmail.com>
Sat, 21 Apr 2012 04:06:49 +0000 (21:06 -0700)
alembic/autogenerate.py
tests/test_autogenerate.py

index 5fa856c5170630c8a010083daedf6e6ef821dd3d..e12e9e6df4e24eca8619342183d3d7b8f0449a8c 100644 (file)
@@ -553,8 +553,15 @@ def _render_check_constraint(constraint, autogen_context):
             "prefix":_sqlalchemy_autogenerate_prefix(autogen_context)
         }
 
+def _render_unique_constraint(constraint, autogen_context):
+    
+    return "%(prefix)sUniqueConstraint(%(cols)s)" % {
+        'cols': ",".join(["'%s'" % c.name for c in constraint.columns]),
+            "prefix":_sqlalchemy_autogenerate_prefix(autogen_context)
+        }
 _constraint_renderers = {
     schema.PrimaryKeyConstraint:_render_primary_key,
     schema.ForeignKeyConstraint:_render_foreign_key,
+    schema.UniqueConstraint:_render_unique_constraint,
     schema.CheckConstraint:_render_check_constraint
 }
index 9a1f6e7bb7c84cc5ae76835cd35d9e79db820822..0e97fdf82aec8d3be56425917c43b3c7de7780b1 100644 (file)
@@ -1,5 +1,5 @@
 from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \
-    Numeric, CHAR, ForeignKey, DATETIME, TypeDecorator, CheckConstraint
+    Numeric, CHAR, ForeignKey, DATETIME, TypeDecorator, CheckConstraint, Unicode
 from sqlalchemy.types import NULLTYPE
 from sqlalchemy.engine.reflection import Inspector
 from alembic import autogenerate
@@ -368,6 +368,7 @@ class AutogenRenderTest(TestCase):
         m = MetaData()
         t = Table('test', m,
             Column('id', Integer, primary_key=True),
+            Column('name', Unicode(255), unique=True),
             Column("address_id", Integer, ForeignKey("address.id")),
             Column("timestamp", DATETIME, server_default="NOW()"),
             Column("amount", Numeric(5, 2)),
@@ -376,13 +377,15 @@ class AutogenRenderTest(TestCase):
             autogenerate._add_table(t, self.autogen_context),
             "op.create_table('test',"
             "sa.Column('id', sa.Integer(), nullable=False),"
+            "sa.Column('name', sa.Unicode(length=255), nullable=True),"
             "sa.Column('address_id', sa.Integer(), nullable=True),"
             "sa.Column('timestamp', sa.DATETIME(), "
                 "server_default='NOW()', "
                 "nullable=True),"
             "sa.Column('amount', sa.Numeric(precision=5, scale=2), nullable=True),"
             "sa.ForeignKeyConstraint(['address_id'], ['address.id'], ),"
-            "sa.PrimaryKeyConstraint('id')"
+            "sa.PrimaryKeyConstraint('id'),"
+            "sa.UniqueConstraint('name')"
             ")"
         )