]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Autogenerate will render additional table keyword
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 12 Mar 2013 19:34:09 +0000 (15:34 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 12 Mar 2013 19:34:09 +0000 (15:34 -0400)
arguments like "mysql_engine" and others within
op.create_table().
#110

alembic/autogenerate.py
docs/build/changelog.rst
tests/test_autogenerate.py

index 9fb0ce29c44405a1036574a118d0a7f7e30c890a..91ddcfca1ba649240f27e81692d538b389291d0f 100644 (file)
@@ -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
 
index e4043de641d6009430661cd4f5685eaa87142f6a..a3ecb6b22eb2c290fadbd443a9be5c2a57d6a11f 100644 (file)
@@ -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
index 1ca5c3628f3e99be7ced2eda62a99d4febc4b8b3..2f541e86b49261ab35b08e8bae7f7e59c76cb9d7 100644 (file)
@@ -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()),