We can then add some directives to our script, suppose adding a new table ``account``::
- from sqlalchemy import Integer, String, Unicode, Column
-
def upgrade():
create_table(
'account',
- Column('id', Integer, primary_key=True),
- Column('name', String(50), nullable=False),
- Column('description', Unicode(200)),
+ sa.Column('id', sa.Integer, primary_key=True),
+ sa.Column('name', sa.String(50), nullable=False),
+ sa.Column('description', sa.Unicode(200)),
)
def downgrade():
from alembic.op import *
import sqlalchemy as sa
- from sqlalchemy import DateTime, Column
def upgrade():
- add_column('account', Column('last_transaction_date', DateTime))
+ add_column('account', sa.Column('last_transaction_date', sa.DateTime))
def downgrade():
drop_column('account', 'last_transaction_date')
Table('order', m,
Column('order_id', Integer, primary_key=True),
- Column("amount", Numeric(8, 2), nullable=False)
+ Column("amount", Numeric(8, 2), nullable=False),
)
Table('extra', m,
Table('order', m,
Column('order_id', Integer, primary_key=True),
- Column("amount", Numeric(10, 2), nullable=True)
+ Column("amount", Numeric(10, 2), nullable=True),
+ Column('user_id', Integer, ForeignKey('user.id')),
)
Table('item', m,
Column('id', Integer, primary_key=True),
- Column('description', String(100))
+ Column('description', String(100)),
+ Column('order_id', Integer, ForeignKey('order.order_id')),
)
return m
eq_(dropcol.type._type_affinity, String)
eq_(dropcol.type.length, 50)
- eq_(repr(diffs[2][3]), "NUMERIC(precision=8, scale=2)")
- eq_(repr(diffs[2][4]), "Numeric(precision=10, scale=2)")
- del diffs[2]
+
+ eq_(repr(diffs[3][3]), "NUMERIC(precision=8, scale=2)")
+ eq_(repr(diffs[3][4]), "Numeric(precision=10, scale=2)")
+ del diffs[3]
eq_(
diffs,
[
('add_table', metadata.tables['item']),
('modify_nullable', 'user', 'name', True, False),
+ ('add_column', 'order', metadata.tables['order'].c.user_id),
('modify_nullable', 'order', u'amount', False, True),
('add_column', 'address',
metadata.tables['address'].c.street)
create_table('item',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('description', sa.String(length=100), nullable=True),
+ sa.Column('order_id', sa.Integer(), nullable=True),
+ sa.ForeignKeyConstraint([order_id], ['order.order_id'], ),
sa.PrimaryKeyConstraint('id')
)
drop_table(u'extra')
drop_column('user', u'pw')
alter_column('user', 'name', nullable=False)
+ add_column('order', sa.Column('user_id', sa.Integer(), nullable=True))
alter_column('order', u'amount', type_=sa.Numeric(precision=10, scale=2), old_type=sa.NUMERIC(precision=8, scale=2))
alter_column('order', u'amount', nullable=True)
add_column('address', sa.Column('street', sa.String(length=50), nullable=True))
### end Alembic commands ###""")
+
eq_(template_args['downgrades'],
"""### commands auto generated by Alembic - please adjust! ###
drop_table('item')
)
add_column('user', sa.Column(u'pw', sa.VARCHAR(length=50), nullable=True))
alter_column('user', 'name', nullable=True)
+ drop_column('order', 'user_id')
alter_column('order', u'amount', type_=sa.NUMERIC(precision=8, scale=2), old_type=sa.Numeric(precision=10, scale=2))
alter_column('order', u'amount', nullable=False)
drop_column('address', 'street')