[Python] Alembic --autogenerate producing empty migration

Discussão em 'Python' iniciado por Stack, Março 21, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to use Alembic for the first time and want to use --autogenerate feature described here

    My project structure looks like

    project/
    configuration/
    __init__.py
    dev.py
    test.py
    core/
    app/
    models/
    __init__.py
    user.py
    db/
    alembic/
    versions/
    env.py
    alembic.ini


    I am using Flask and SQLAlchemy and their Flask-SQLAlchemy extension. my model User looks like

    class User(UserMixin, db.Model):
    __tablename__ = 'users'
    # noinspection PyShadowingBuiltins
    uuid = Column('uuid', GUID(), default=uuid.uuid4, primary_key=True,
    unique=True)
    email = Column('email', String, nullable=False, unique=True)
    _password = Column('password', String, nullable=False)
    created_on = Column('created_on', sa.types.DateTime(timezone=True),
    default=datetime.utcnow())
    last_login = Column('last_login', sa.types.DateTime(timezone=True),
    onupdate=datetime.utcnow())


    As described here, I modified env.py to look like

    from configuration import app

    alembic_config = config.get_section(config.config_ini_section)
    alembic_config['sqlalchemy.url'] = app.config['SQLALCHEMY_DATABASE_URI']
    engine = engine_from_config(
    alembic_config,
    prefix='sqlalchemy.',
    poolclass=pool.NullPool)


    and

    from configuration import db


    target_metadata = db.metadata


    where configuration.__init__py looks like

    from flask import Flask
    from flask.ext.sqlalchemy import SQLAlchemy
    import dev


    app = Flask(__name__)
    app.config.from_envvar('SETTINGS_PT')
    db = SQLAlchemy(app)


    Now when I run migration

    $alembic revision --autogenerate -m "Added user table"
    INFO [alembic.migration] Context impl PostgresqlImpl.
    INFO [alembic.migration] Will assume transactional DDL.
    Generating /Users/me/IdeaProjects/project/db/alembic/versions/55a9d5
    35d8ae_added_user_table.py...done


    but file alembic/versions/55a9d5 has empty upgrade() and downgrade() methods

    """Added user table

    Revision ID: 1b62a62eef0d
    Revises: None
    Create Date: 2013-03-27 06:37:08.314177

    """

    # revision identifiers, used by Alembic.
    revision = '1b62a62eef0d'
    down_revision = None

    from alembic import op
    import sqlalchemy as sa


    def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    pass
    ### end Alembic commands ###


    def downgrade():
    ### commands auto generated by Alembic - please adjust! ###
    pass
    ### end Alembic commands ###


    How come it is not able to understand that there is a new User model? Please help

    Continue reading...

Compartilhe esta Página