在使用Alembic监视数据库更改时,如果修改了表的结构,Alembic将会以表而不是列作为处理单元,导致同一个表中所有列的变化都会合并为一个迁移文件。如果需要对列的变化进行分别处理,可以使用Alembic中的batch_alter_table()方法。
示例代码:
from alembic import op import sqlalchemy as sa
def upgrade(): with op.batch_alter_table('users') as batch_op: batch_op.alter_column('name', type_=sa.String(200))
def downgrade(): with op.batch_alter_table('users') as batch_op: batch_op.alter_column('name', type_=sa.String(50))