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)