it's possible also that PG Enum CREATE TYPE doesn't work with schema_translate_map, would need to evaluate that on the SQLAlchemy side.
On Mon, Feb 17, 2020, at 2:45 PM, Mike Bayer wrote: > schema_translate_map is not yet supported with all Alembic ops: > > https://github.com/sqlalchemy/alembic/issues/555 > > you will need to fill in the "schema" parameter explicitly when you call upon > op.create_table() > > > > On Mon, Feb 17, 2020, at 12:47 PM, Brian Hill wrote: >> I'm having trouble using enums in conjunction with schema_translate_map for >> postgres migrations. >> >> My model, single table, single enum. >> >> import enum >> from sqlalchemy import MetaData, Enum, Column, Integer >> from sqlalchemy.ext.declarative import declarative_base >> >> >> metadata = MetaData() >> Base = declarative_base(metadata=metadata) >> >> >> >> >> class Enum1(enum.Enum): >> One = 1 >> Two = 2 >> >> >> >> >> class Table1(Base): >> __tablename__ = 'table1' >> id = Column(Integer, primary_key=True) >> type1 = Column(Enum(Enum1)) >> >> Version file. >> >> >> """initial revision >> >> >> Revision ID: 844dd0269c1b >> Revises: >> Create Date: 2020-02-17 12:23:31.125308 >> >> >> """ >> from alembic import op >> import sqlalchemy as sa >> >> >> >> >> # revision identifiers, used by Alembic. >> revision = '844dd0269c1b' >> down_revision = None >> branch_labels = None >> depends_on = None >> >> >> >> >> def upgrade(): >> # ### commands auto generated by Alembic - please adjust! ### >> op.create_table('table1', >> sa.Column('id', sa.Integer(), nullable=False), >> sa.Column('type1', sa.Enum('One', 'Two', name='enum1'), nullable=True), >> sa.PrimaryKeyConstraint('id') >> ) >> # ### end Alembic commands ### >> >> >> >> >> def downgrade(): >> # ### commands auto generated by Alembic - please adjust! ### >> op.drop_table('table1') >> # ### end Alembic commands ### >> >> >> Run migration funtion from env.py (creating foo schema): >> >> >> >> def run_migrations_online(): >> connectable = engine_from_config( >> config.get_section(config.config_ini_section), >> prefix="sqlalchemy.", >> poolclass=pool.NullPool, >> ) >> >> >> with connectable.connect() as connection: >> >> >> # use different schema >> connection.execute(f'create schema if not exists foo') >> connection = connection.execution_options( >> schema_translate_map={None: 'foo'} >> ) >> >> >> context.configure( >> connection=connection, >> target_metadata=target_metadata, >> include_schema=True, >> ) >> >> >> with context.begin_transaction(): >> context.run_migrations() >> >> >> I get the following error when i run *alembic upgrade head*: >> >> >> sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedObject) type >> "enum1" does not exist >> LINE 4: type1 enum1, >> ^ >> >> >> [SQL: >> CREATE TABLE foo.table1 ( >> id SERIAL NOT NULL, >> type1 enum1, >> PRIMARY KEY (id) >> ) >> >> >> ] >> (Background on this error at: http://sqlalche.me/e/f405) >> >> It works when I comment out schema_translate_map. >> >> I feel like I'm missing something fundamental about using >> schema_translate_map for multi-tenant/schema. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy-alembic" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sqlalchemy-alembic+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sqlalchemy-alembic/f8513719-4dd0-4bb2-b769-ff874e2017f2%40googlegroups.com >> >> <https://groups.google.com/d/msgid/sqlalchemy-alembic/f8513719-4dd0-4bb2-b769-ff874e2017f2%40googlegroups.com?utm_medium=email&utm_source=footer>. > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy-alembic" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy-alembic+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sqlalchemy-alembic/1ffea337-b61f-4712-9b90-c73056895e45%40www.fastmail.com > > <https://groups.google.com/d/msgid/sqlalchemy-alembic/1ffea337-b61f-4712-9b90-c73056895e45%40www.fastmail.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "sqlalchemy-alembic" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy-alembic+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy-alembic/078033be-3f96-4ebe-8be7-b23e3842c312%40www.fastmail.com.