alembic icon indicating copy to clipboard operation
alembic copied to clipboard

support PG INHERITS in autogenerate

Open sqlalchemy-bot opened this issue 8 years ago • 4 comments

Migrated issue, originally created by Quentin Leffray

Running Alembic autogenerate do not detect inherited columns from a parent table, and flag them as "to-be-dropped".

The model is defined as follow:

class Animal(Base):
    __tablename__ = 'animal'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    type_ = Column(String)

    __mapper_args__ = {
        'polymorphic_identity': 'animal',
        'polymorphic_on': type_,
        'with_polymorphic': '*',
    }

class Unicorn(Animal):
    __tablename__ = 'unicorn'
    __table_args__ = {'postgresql_inherits': 'animal'}

    id = Column(Integer, ForeignKey('animal.id'), primary_key=True)
    color = Column(String)

    __mapper_args__ = {
        'polymorphic_identity': 'unicorn',
    }

And the migration produced by alembic --autogenerate:

def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.drop_column('unicorn', 'name')
    op.drop_column('unicorn', 'type_')

sqlalchemy-bot avatar Dec 22 '16 16:12 sqlalchemy-bot

Michael Bayer (@zzzeek) wrote:

nothing is wrong, this is something that isn't supported out of the box. At the very least would rely upon https://bitbucket.org/zzzeek/sqlalchemy/issues/1803/reflect-postgresql-inherits-relationships. For autogenerate you need to write an include_object routine to ignore these columns appropriately. I'd also accept a recipe section that includes this workaround for now.

sqlalchemy-bot avatar Dec 22 '16 18:12 sqlalchemy-bot

Changes by Quentin Leffray:

  • edited description

sqlalchemy-bot avatar Dec 22 '16 16:12 sqlalchemy-bot

Changes by Michael Bayer (@zzzeek):

  • removed labels: bug
  • added labels: feature

sqlalchemy-bot avatar Dec 22 '16 18:12 sqlalchemy-bot

Changes by Michael Bayer (@zzzeek):

  • changed title from "Autogenerate detection of inherited columns and po" to "support PG INHERITS in autogenerate"

sqlalchemy-bot avatar Dec 22 '16 18:12 sqlalchemy-bot