]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- `PrimaryKeyConstraint` should be rendered referencing the `name`
authorJesse Dhillon <jesse@dhillon.com>
Sun, 25 Oct 2015 21:49:01 +0000 (14:49 -0700)
committerJesse Dhillon <jesse@dhillon.com>
Sun, 25 Oct 2015 21:49:01 +0000 (14:49 -0700)
  property of the columns it comprises, instead of the `key`. See #335

alembic/autogenerate/render.py
tests/test_autogen_render.py

index 9a64641004af708bfd84a176a50e003e37e4d33c..fe0242f301b1e5e7677b9aaa27828edd3ae8d23c 100644 (file)
@@ -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]
         ),
     }
index c113a233ec724af1fceaa68a5a751bd49092c194..392650cc7656e547e82118682c6ef151ace40827 100644 (file)
@@ -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))