import re
+from sqlalchemy import Column
+from sqlalchemy import Integer
+from sqlalchemy import MetaData
+from sqlalchemy import String
+from sqlalchemy import Table
+from sqlalchemy.sql.sqltypes import DateTime
+
from alembic import autogenerate
from alembic.migration import MigrationContext
from alembic.testing import eq_
nullable=True,
existing_server_default=sa.text('0'))
op.create_foreign_key(None, 'order', 'user', ['user_id'], ['id'])
+ op.alter_column('user', 'name',
+ existing_type=sa.VARCHAR(length=50),
+ nullable=False)
op.alter_column('user', 'a1',
existing_type=sa.TEXT(),
server_default='x',
existing_nullable=True)
- op.alter_column('user', 'name',
- existing_type=sa.VARCHAR(length=50),
- nullable=False)
op.drop_index('pw_idx', table_name='user')
op.drop_column('user', 'pw')
# ### end Alembic commands ###""",
op.add_column('user', sa.Column('pw', sa.VARCHAR(length=50), \
nullable=True))
op.create_index('pw_idx', 'user', ['pw'], unique=False)
- op.alter_column('user', 'name',
- existing_type=sa.VARCHAR(length=50),
- nullable=True)
op.alter_column('user', 'a1',
existing_type=sa.TEXT(),
server_default=None,
existing_nullable=True)
+ op.alter_column('user', 'name',
+ existing_type=sa.VARCHAR(length=50),
+ nullable=True)
op.drop_constraint(None, 'order', type_='foreignkey')
op.alter_column('order', 'amount',
existing_type=sa.Numeric(precision=10, scale=2),
batch_op.create_foreign_key(None, 'user', ['user_id'], ['id'])
with op.batch_alter_table('user', schema=None) as batch_op:
+ batch_op.alter_column('name',
+ existing_type=sa.VARCHAR(length=50),
+ nullable=False)
batch_op.alter_column('a1',
existing_type=sa.TEXT(),
server_default='x',
existing_nullable=True)
- batch_op.alter_column('name',
- existing_type=sa.VARCHAR(length=50),
- nullable=False)
batch_op.drop_index('pw_idx')
batch_op.drop_column('pw')
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.add_column(sa.Column('pw', sa.VARCHAR(length=50), nullable=True))
batch_op.create_index('pw_idx', ['pw'], unique=False)
- batch_op.alter_column('name',
- existing_type=sa.VARCHAR(length=50),
- nullable=True)
batch_op.alter_column('a1',
existing_type=sa.TEXT(),
server_default=None,
existing_nullable=True)
+ batch_op.alter_column('name',
+ existing_type=sa.VARCHAR(length=50),
+ nullable=True)
with op.batch_alter_table('order', schema=None) as batch_op:
batch_op.drop_constraint(None, type_='foreignkey')
)
+class AddColumnOrderTest(AutogenTest, TestBase):
+ @classmethod
+ def _get_db_schema(cls):
+ m = MetaData()
+
+ Table(
+ "user",
+ m,
+ Column("id", Integer, primary_key=True),
+ Column("name", String(50)),
+ )
+
+ return m
+
+ @classmethod
+ def _get_model_schema(cls):
+ m = MetaData()
+
+ Table(
+ "user",
+ m,
+ Column("id", Integer, primary_key=True),
+ Column("name", String(50)),
+ Column("username", String(50)),
+ Column("password_hash", String(32)),
+ Column("timestamp", DateTime),
+ )
+
+ return m
+
+ def test_render_add_columns(self):
+ """test #827"""
+
+ template_args = {}
+ autogenerate._render_migration_diffs(self.context, template_args)
+ eq_(
+ re.sub(r"u'", "'", template_args["upgrades"]),
+ """# ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('user', sa.Column('username', sa.String(length=50), nullable=True))
+ op.add_column('user', sa.Column('password_hash', sa.String(length=32), nullable=True))
+ op.add_column('user', sa.Column('timestamp', sa.DateTime(), nullable=True))
+ # ### end Alembic commands ###""", # noqa E501
+ )
+
+ eq_(
+ re.sub(r"u'", "'", template_args["downgrades"]),
+ """# ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('user', 'timestamp')
+ op.drop_column('user', 'password_hash')
+ op.drop_column('user', 'username')
+ # ### end Alembic commands ###""",
+ )
+
+
class AutogenerateDiffTestWSchema(ModelOne, AutogenTest, TestBase):
__only_on__ = "postgresql"
schema = "test_schema"
schema='%(schema)s')
op.create_foreign_key(None, 'order', 'user', ['user_id'], ['id'], \
source_schema='%(schema)s', referent_schema='%(schema)s')
+ op.alter_column('user', 'name',
+ existing_type=sa.VARCHAR(length=50),
+ nullable=False,
+ schema='%(schema)s')
op.alter_column('user', 'a1',
existing_type=sa.TEXT(),
server_default='x',
existing_nullable=True,
schema='%(schema)s')
- op.alter_column('user', 'name',
- existing_type=sa.VARCHAR(length=50),
- nullable=False,
- schema='%(schema)s')
op.drop_index('pw_idx', table_name='user', schema='test_schema')
op.drop_column('user', 'pw', schema='%(schema)s')
# ### end Alembic commands ###"""
op.add_column('user', sa.Column('pw', sa.VARCHAR(length=50), \
autoincrement=False, nullable=True), schema='%(schema)s')
op.create_index('pw_idx', 'user', ['pw'], unique=False, schema='%(schema)s')
- op.alter_column('user', 'name',
- existing_type=sa.VARCHAR(length=50),
- nullable=True,
- schema='%(schema)s')
op.alter_column('user', 'a1',
existing_type=sa.TEXT(),
server_default=None,
existing_nullable=True,
schema='%(schema)s')
+ op.alter_column('user', 'name',
+ existing_type=sa.VARCHAR(length=50),
+ nullable=True,
+ schema='%(schema)s')
op.drop_constraint(None, 'order', schema='%(schema)s', type_='foreignkey')
op.alter_column('order', 'amount',
existing_type=sa.Numeric(precision=10, scale=2),
diffs[6], "add_fk", "order", ["user_id"], "user", ["id"]
)
- eq_(diffs[7][0][0], "modify_default")
- eq_(diffs[7][0][1], None)
- eq_(diffs[7][0][2], "user")
- eq_(diffs[7][0][3], "a1")
- eq_(diffs[7][0][6].arg, "x")
+ eq_(diffs[7][0][0], "modify_nullable")
+ eq_(diffs[7][0][5], True)
+ eq_(diffs[7][0][6], False)
- eq_(diffs[8][0][0], "modify_nullable")
- eq_(diffs[8][0][5], True)
- eq_(diffs[8][0][6], False)
+ eq_(diffs[8][0][0], "modify_default")
+ eq_(diffs[8][0][1], None)
+ eq_(diffs[8][0][2], "user")
+ eq_(diffs[8][0][3], "a1")
+ eq_(diffs[8][0][6].arg, "x")
eq_(diffs[9][0], "remove_index")
eq_(diffs[9][1].name, "pw_idx")
source_schema=config.test_schema,
)
- eq_(diffs[7][0][0], "modify_default")
- eq_(diffs[7][0][1], self.schema)
- eq_(diffs[7][0][2], "user")
- eq_(diffs[7][0][3], "a1")
- eq_(diffs[7][0][6].arg, "x")
+ eq_(diffs[7][0][0], "modify_nullable")
+ eq_(diffs[7][0][5], True)
+ eq_(diffs[7][0][6], False)
- eq_(diffs[8][0][0], "modify_nullable")
- eq_(diffs[8][0][5], True)
- eq_(diffs[8][0][6], False)
+ eq_(diffs[8][0][0], "modify_default")
+ eq_(diffs[8][0][1], self.schema)
+ eq_(diffs[8][0][2], "user")
+ eq_(diffs[8][0][3], "a1")
+ eq_(diffs[8][0][6].arg, "x")
eq_(diffs[9][0], "remove_index")
eq_(diffs[9][1].name, "pw_idx")
diffs[6], "add_fk", "order", ["user_id"], "user", ["id"]
)
- eq_(diffs[7][0][0], "modify_default")
- eq_(diffs[7][0][1], None)
- eq_(diffs[7][0][2], "user")
- eq_(diffs[7][0][3], "a1")
- eq_(diffs[7][0][6].arg, "x")
+ eq_(diffs[7][0][0], "modify_nullable")
+ eq_(diffs[7][0][5], True)
+ eq_(diffs[7][0][6], False)
- eq_(diffs[8][0][0], "modify_nullable")
- eq_(diffs[8][0][5], True)
- eq_(diffs[8][0][6], False)
+ eq_(diffs[8][0][0], "modify_default")
+ eq_(diffs[8][0][1], None)
+ eq_(diffs[8][0][2], "user")
+ eq_(diffs[8][0][3], "a1")
+ eq_(diffs[8][0][6].arg, "x")
eq_(diffs[9][0], "remove_index")
eq_(diffs[9][1].name, "pw_idx")