From c85f2de986da6c1231a18732b097ff890e67977e Mon Sep 17 00:00:00 2001 From: Damien Garaud Date: Wed, 23 Jan 2019 15:38:34 +0100 Subject: [PATCH] Fix single quote escaping for the SQL comments --- alembic/autogenerate/render.py | 2 +- tests/test_autogen_render.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py index 64dbaebf..3fb0a422 100644 --- a/alembic/autogenerate/render.py +++ b/alembic/autogenerate/render.py @@ -614,7 +614,7 @@ def _render_column(column, autogen_context): comment = sqla_compat._comment_attribute(column) if comment: - opts.append(("comment", "'%s'" % comment)) + opts.append(("comment", '%r' % comment)) # TODO: for non-ascii colname, assign a "key" return "%(prefix)sColumn(%(name)r, %(type)s, %(kw)s)" % { diff --git a/tests/test_autogen_render.py b/tests/test_autogen_render.py index 7673a493..4d010a41 100644 --- a/tests/test_autogen_render.py +++ b/tests/test_autogen_render.py @@ -1155,6 +1155,19 @@ class AutogenRenderTest(TestBase): "comment='This is a comment')", ) + @config.requirements.comments_api + def test_render_col_comment_with_quote(self): + c = Column("some_key", Integer, comment="This is a john's comment") + Table("some_table", MetaData(), c) + result = autogenerate.render._render_column(c, self.autogen_context) + print(result) + eq_ignore_whitespace( + result, + "sa.Column('some_key', sa.Integer(), " + "nullable=True, " + "comment=\"This is a john's comment\")", + ) + def test_render_col_autoinc_false_mysql(self): c = Column("some_key", Integer, primary_key=True, autoincrement=False) Table("some_table", MetaData(), c) -- 2.47.2