From 088efe30db2072d5cc852de535122f551021e873 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 12 Mar 2013 15:34:09 -0400 Subject: [PATCH] Autogenerate will render additional table keyword arguments like "mysql_engine" and others within op.create_table(). #110 --- alembic/autogenerate.py | 2 ++ docs/build/changelog.rst | 8 ++++++++ tests/test_autogenerate.py | 22 +++++++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/alembic/autogenerate.py b/alembic/autogenerate.py index 9fb0ce29..91ddcfca 100644 --- a/alembic/autogenerate.py +++ b/alembic/autogenerate.py @@ -457,6 +457,8 @@ def _add_table(table, autogen_context): } if table.schema: text += ",\nschema=%r" % table.schema + for k in sorted(table.kwargs): + text += ",\n%s=%r" % (k.replace(" ", "_"), table.kwargs[k]) text += "\n)" return text diff --git a/docs/build/changelog.rst b/docs/build/changelog.rst index e4043de6..a3ecb6b2 100644 --- a/docs/build/changelog.rst +++ b/docs/build/changelog.rst @@ -6,6 +6,14 @@ Changelog .. changelog:: :version: 0.5.0 + .. change:: + :tags: bug + :tickets: 110 + + Autogenerate will render additional table keyword + arguments like "mysql_engine" and others within + op.create_table(). + .. change:: :tags: feature :tickets: 108 diff --git a/tests/test_autogenerate.py b/tests/test_autogenerate.py index 1ca5c362..2f541e86 100644 --- a/tests/test_autogenerate.py +++ b/tests/test_autogenerate.py @@ -197,7 +197,10 @@ class ImplicitConstraintNoGenTest(AutogenTest, TestCase): "nullable=False),\n" " sa.Column('value', mysql.TINYINT(display_width=1), " "autoincrement=False, nullable=True),\n" - " sa.PrimaryKeyConstraint('id')\n )\n" + " sa.PrimaryKeyConstraint('id'),\n" + " mysql_default_charset='utf8',\n" + " mysql_engine='MyISAM'\n" + " )\n" " op.drop_table('sometable')\n" " ### end Alembic commands ###" ) @@ -867,6 +870,23 @@ class AutogenRenderTest(TestCase): ")" ) + def test_render_addtl_args(self): + m = MetaData() + t = Table('test', m, + Column('id', Integer, primary_key=True), + Column('q', Integer, ForeignKey('bar.address.id')), + postgresql_arg1="some_arg", mysql_engine="InnoDB" + ) + eq_ignore_whitespace( + autogenerate._add_table(t, self.autogen_context), + "op.create_table('test'," + "sa.Column('id', sa.Integer(), nullable=False)," + "sa.Column('q', sa.Integer(), nullable=True)," + "sa.ForeignKeyConstraint(['q'], ['bar.address.id'], )," + "sa.PrimaryKeyConstraint('id')," + "mysql_engine='InnoDB',postgresql_arg1='some_arg')" + ) + def test_render_drop_table(self): eq_( autogenerate._drop_table(Table("sometable", MetaData()), -- 2.47.2