Modificando colunas anuláveis ​​em Alembic

Se você tentar adicionar uma nova coluna a uma tabela e defini-la como NOT NULL (ou alterar uma coluna para NOT NULL), o alambique funcionará em:

python manage.py db upgrade

Ele diz a você – com razão – que há (ou haverá) valores NULL existentes no banco de dados para aquela coluna. A resposta é editar o arquivo de migração para atualizar a coluna antes de alterar a definição da coluna:

from sqlalchemy.sql import table, column

def upgrade():
op
.add_column('role', sa.Column('role_name', sa.String(length=30), nullable=True))
role
= table('role', column('role_name'))
op
.execute(role.update().values(role_name=''))
op
.alter_column('role', 'role_name', nullable=False)