Description
Any SQLAlchemy operation that involves an Enum-typed column with the Databricks dialect raises:
TypeError: String.__init__() got an unexpected keyword argument '_enums'
Steps to reproduce
from sqlalchemy import create_engine, Column, Enum
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class MyTable(Base):
__tablename__ = "my_table"
status = Column(Enum("A", "B", "C"), nullable=False)
engine = create_engine("databricks://...")
Base.metadata.create_all(engine)
Root cause
databricks-sqlalchemy registers DatabricksStringType as the colspec for sqlalchemy.String in the Databricks dialect. When SQLAlchemy adapts an Enum column (via Enum.adapt()), it internally passes _enums as a keyword argument to the target type's constructor. DatabricksStringType.__init__() does not accept **kwargs or _enums, causing the crash.
Environment
Affected versions: 2.0.1 – 2.0.9
SQLAlchemy: 2.0.x
Related issues
Description
Any SQLAlchemy operation that involves an Enum-typed column with the Databricks dialect raises:
Steps to reproduce
Root cause
databricks-sqlalchemyregistersDatabricksStringTypeas the colspec forsqlalchemy.Stringin the Databricks dialect. When SQLAlchemy adapts an Enum column (viaEnum.adapt()), it internally passes_enumsas a keyword argument to the target type's constructor.DatabricksStringType.__init__()does not accept**kwargsor_enums, causing the crash.Environment
Affected versions: 2.0.1 – 2.0.9
SQLAlchemy: 2.0.x
Related issues