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
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
intablename
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)
- 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)
- Run the
flask db upgrade
to implement this latest migration file in your database schema and runflask db downgrade
to get the previous database schema.
Top comments (0)