From: Dimitris Theodorou Date: Sun, 19 Jan 2014 14:40:03 +0000 (+0100) Subject: Schema fixes on rendering of alembic op. directives X-Git-Tag: rel_0_6_3~15^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20c08069237107459c78aa0933c542ade3541596;p=thirdparty%2Fsqlalchemy%2Falembic.git Schema fixes on rendering of alembic op. directives Added schema parameter in _drop_index, _drop_constraint Removed prepending of the schema name in _add_index table parameter. --- diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py index b89227ad..38e953c6 100644 --- a/alembic/autogenerate/render.py +++ b/alembic/autogenerate/render.py @@ -67,7 +67,7 @@ def _add_index(index, autogen_context): "unique=%(unique)r%(schema)s%(kwargs)s)" % { 'prefix': _alembic_autogenerate_prefix(autogen_context), 'name': index.name, - 'table': index.table, + 'table': index.table.name, 'columns': _get_index_column_names(index), 'unique': index.unique or False, 'schema': (", schema='%s'" % index.table.schema) if index.table.schema else '', @@ -83,10 +83,14 @@ def _drop_index(index, autogen_context): Generate Alembic operations for the DROP INDEX of an :class:`~sqlalchemy.schema.Index` instance. """ - text = "%sdrop_index('%s', '%s')" % ( - _alembic_autogenerate_prefix(autogen_context), - index.name, - index.table) + text = "%(prefix)sdrop_index('%(name)s', "\ + "table_name='%(table_name)s'%(schema)s)" % { + 'prefix': _alembic_autogenerate_prefix(autogen_context), + 'name': index.name, + 'table_name': index.table.name, + 'schema': ((", schema='%s'" % index.table.schema) + if index.table.schema else '') + } return text @@ -160,10 +164,12 @@ def _drop_constraint(constraint, autogen_context): Generate Alembic operations for the ALTER TABLE ... DROP CONSTRAINT of a :class:`~sqlalchemy.schema.UniqueConstraint` instance. """ - text = "%(prefix)sdrop_constraint(%(name)r, '%(table)s')" % { + text = "%(prefix)sdrop_constraint(%(name)r, '%(table_name)s'%(schema)s)" % { 'prefix': _alembic_autogenerate_prefix(autogen_context), 'name': constraint.name, - 'table': constraint.table, + 'table_name': constraint.table.name, + 'schema': (", schema='%s'" % constraint.table.schema) + if constraint.table.schema else '', } return text diff --git a/tests/test_autogen_render.py b/tests/test_autogen_render.py index c1942ef9..d06b36c3 100644 --- a/tests/test_autogen_render.py +++ b/tests/test_autogen_render.py @@ -68,7 +68,7 @@ class AutogenRenderTest(TestCase): idx = Index('test_active_code_idx', t.c.active, t.c.code) eq_ignore_whitespace( autogenerate.render._add_index(idx, self.autogen_context), - "op.create_index('test_active_code_idx', 'CamelSchema.test', " + "op.create_index('test_active_code_idx', 'test', " "['active', 'code'], unique=False, schema='CamelSchema')" ) @@ -127,7 +127,25 @@ class AutogenRenderTest(TestCase): idx = Index('test_active_code_idx', t.c.active, t.c.code) eq_ignore_whitespace( autogenerate.render._drop_index(idx, self.autogen_context), - "op.drop_index('test_active_code_idx', 'test')" + "op.drop_index('test_active_code_idx', table_name='test')" + ) + + def test_drop_index_schema(self): + """ + autogenerate.render._drop_index using schema + """ + m = MetaData() + t = Table('test', m, + Column('id', Integer, primary_key=True), + Column('active', Boolean()), + Column('code', String(255)), + schema='CamelSchema' + ) + idx = Index('test_active_code_idx', t.c.active, t.c.code) + eq_ignore_whitespace( + autogenerate.render._drop_index(idx, self.autogen_context), + "op.drop_index('test_active_code_idx', " + + "table_name='test', schema='CamelSchema')" ) def test_add_unique_constraint(self): @@ -145,6 +163,23 @@ class AutogenRenderTest(TestCase): autogenerate.render._add_unique_constraint(uq, self.autogen_context), "op.create_unique_constraint('uq_test_code', 'test', ['code'])" ) + + def test_add_unique_constraint_schema(self): + """ + autogenerate.render._add_unique_constraint using schema + """ + m = MetaData() + t = Table('test', m, + Column('id', Integer, primary_key=True), + Column('active', Boolean()), + Column('code', String(255)), + schema='CamelSchema' + ) + uq = UniqueConstraint(t.c.code, name='uq_test_code') + eq_ignore_whitespace( + autogenerate.render._add_unique_constraint(uq, self.autogen_context), + "op.create_unique_constraint('uq_test_code', 'test', ['code'], schema='CamelSchema')" + ) def test_drop_constraint(self): """ @@ -161,6 +196,23 @@ class AutogenRenderTest(TestCase): autogenerate.render._drop_constraint(uq, self.autogen_context), "op.drop_constraint('uq_test_code', 'test')" ) + + def test_drop_constraint_schema(self): + """ + autogenerate.render._drop_constraint using schema + """ + m = MetaData() + t = Table('test', m, + Column('id', Integer, primary_key=True), + Column('active', Boolean()), + Column('code', String(255)), + schema='CamelSchema' + ) + uq = UniqueConstraint(t.c.code, name='uq_test_code') + eq_ignore_whitespace( + autogenerate.render._drop_constraint(uq, self.autogen_context), + "op.drop_constraint('uq_test_code', 'test', schema='CamelSchema')" + ) def test_render_table_upgrade(self): m = MetaData()