From: Atsushi Odagiri Date: Sat, 21 Apr 2012 04:06:49 +0000 (-0700) Subject: uniqueconstraint X-Git-Tag: rel_0_3_2~6^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=158c5fe19722b692a6c1abe38cea96a6c6643a6f;p=thirdparty%2Fsqlalchemy%2Falembic.git uniqueconstraint --- diff --git a/alembic/autogenerate.py b/alembic/autogenerate.py index 5fa856c5..e12e9e6d 100644 --- a/alembic/autogenerate.py +++ b/alembic/autogenerate.py @@ -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 } diff --git a/tests/test_autogenerate.py b/tests/test_autogenerate.py index 9a1f6e7b..0e97fdf8 100644 --- a/tests/test_autogenerate.py +++ b/tests/test_autogenerate.py @@ -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')" ")" )