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.

Reply via email to