From 5b630c1102067a931a4ec1e142806d413aef600d Mon Sep 17 00:00:00 2001 From: Jesse Dhillon Date: Sun, 25 Oct 2015 14:49:01 -0700 Subject: [PATCH] - `PrimaryKeyConstraint` should be rendered referencing the `name` property of the columns it comprises, instead of the `key`. See #335 --- alembic/autogenerate/render.py | 2 +- tests/test_autogen_render.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py index 9a646410..fe0242f3 100644 --- a/alembic/autogenerate/render.py +++ b/alembic/autogenerate/render.py @@ -605,7 +605,7 @@ def _render_primary_key(constraint, autogen_context): return "%(prefix)sPrimaryKeyConstraint(%(args)s)" % { "prefix": _sqlalchemy_autogenerate_prefix(autogen_context), "args": ", ".join( - [repr(c.key) for c in constraint.columns] + + [repr(c.name) for c in constraint.columns] + ["%s=%s" % (kwname, val) for kwname, val in opts] ), } diff --git a/tests/test_autogen_render.py b/tests/test_autogen_render.py index c113a233..392650cc 100644 --- a/tests/test_autogen_render.py +++ b/tests/test_autogen_render.py @@ -882,6 +882,18 @@ unique=False, """ "sa.Column('x', sa.Boolean(), nullable=True))" ) + def test_render_pk_with_col_name_vs_col_key(self): + m = MetaData() + t1 = Table('t1', m, Column('x', Integer, key='y', primary_key=True)) + + op_obj = ops.CreateTableOp.from_table(t1) + eq_ignore_whitespace( + autogenerate.render_op_text(self.autogen_context, op_obj), + "op.create_table('t1'," + "sa.Column('x', sa.Integer(), nullable=False)," + "sa.PrimaryKeyConstraint('x'))" + ) + def test_render_empty_pk_vs_nonempty_pk(self): m = MetaData() t1 = Table('t1', m, Column('x', Integer)) -- 2.47.2