DEV Community

sumandari
sumandari

Posted on

Flask-Migrate (SQLAlchemy) update length of String Field

I wanted to update the length of my string field model. But when I run flask db migrate it says:

"INFO [alembic.env] No changes in schema detected."

So here's how I updated my length of a string field in my SQLALchemy model (I used postgres for the database)

  • Create an empty migration file flask db revision -m "your migration message here". it created a new migration file with this content:
"""your migration message here

Revision ID: 24822ca23a29
Revises: c48c50454932
Create Date: 2023-07-20 23:37:28.918613

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '24822ca23a29'
down_revision = 'c48c50454932'
branch_labels = None
depends_on = None


def upgrade():
    pass


def downgrade():
    pass
Enter fullscreen mode Exit fullscreen mode

according to that file, if you run flask db current, it will return the down_revision value: c48c50454932.
And if you want to implement this specific migration file, you need to run flask db upgrade 24822ca23a29 which is the value of revision

  • Now, update the upgrade method with your expected string field properties. I wanted to update field my_field in tablename table in my database. The existing length was 20, and I wanted to make it 50. Null value is not allowed in my case.

def upgrade():
    op.alter_column('tablename', 'my_field',
                    existing_type=sa.String(length=20),
                    type_=sa.String(length=50),
                    existing_nullable=False)

Enter fullscreen mode Exit fullscreen mode
  • Always use downgrade method for the fallback just in case the migration doesn't work as expected.

basically, I just wanted to make the length back to the previous value. So I switched the existing_type and type_ value


def downgrade():
    op.alter_column('tablename', 'my_field',
                    existing_type=sa.String(length=50),
                    type_=sa.String(length=20),
                    existing_nullable=False)

Enter fullscreen mode Exit fullscreen mode
  • Run the flask db upgrade to implement this latest migration file in your database schema and run flask db downgrade to get the previous database schema.

Image of AssemblyAI

Automatic Speech Recognition with AssemblyAI

Experience near-human accuracy, low-latency performance, and advanced Speech AI capabilities with AssemblyAI's Speech-to-Text API. Sign up today and get $50 in API credit. No credit card required.

Try the API

Top comments (0)