Here is your SQL output, enum is created correctly:

CREATE TYPE test_schema.enum1 AS ENUM ('One', 'Two')


however table does not refer to the correct enum:

CREATE TABLE test_schema.table1 (
id SERIAL NOT NULL,
type1 enum1,
PRIMARY KEY (id)
)


this is SQLAlchemy bug https://github.com/sqlalchemy/sqlalchemy/issues/5158 
will be fixed in 1.3.14


On Mon, Feb 17, 2020, at 2:51 PM, Mike Bayer wrote:
> mm nope we have plenty of tests for this here:
> 
> https://github.com/sqlalchemy/sqlalchemy/blob/master/test/dialect/postgresql/test_compiler.py#L223
> 
> 
> 
> On Mon, Feb 17, 2020, at 2:49 PM, Mike Bayer wrote:
>> 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
>>  
>> <https://groups.google.com/d/msgid/sqlalchemy-alembic/078033be-3f96-4ebe-8be7-b23e3842c312%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/5be055e0-1c86-43d8-b879-45423c6641c5%40www.fastmail.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy-alembic/5be055e0-1c86-43d8-b879-45423c6641c5%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/9c4b6042-1c4e-453d-9838-d4f367bf55b2%40www.fastmail.com.

Reply via email to