Closed
Description
First Check
- I added a very descriptive title to this issue.
- I used the GitHub search to find a similar issue and didn't find it.
- I searched the SQLModel documentation, with the integrated search.
- I already searched in Google "How to X in SQLModel" and didn't find any information.
- I already read and followed all the tutorial in the docs and didn't find an answer.
- I already checked if it is not related to SQLModel but to Pydantic.
- I already checked if it is not related to SQLModel but to SQLAlchemy.
Commit to Help
- I commit to help with one of those options 👆
Example Code
import enum
import uuid
from sqlalchemy import Enum, Column, create_mock_engine
from sqlalchemy.sql.type_api import TypeEngine
from sqlmodel import SQLModel, Field
class MyEnum(enum.Enum):
A = 'A'
B = 'B'
class MyEnum2(enum.Enum):
C = 'C'
D = 'D'
class BaseModel(SQLModel):
id: uuid.UUID = Field(primary_key=True)
enum_field: MyEnum2 = Field(sa_column=Column(Enum(MyEnum2)))
class FlatModel(SQLModel, table=True):
id: uuid.UUID = Field(primary_key=True)
enum_field: MyEnum = Field(sa_column=Column(Enum(MyEnum)))
class InheritModel(BaseModel, table=True):
pass
def dump(sql: TypeEngine, *args, **kwargs):
dialect = sql.compile(dialect=engine.dialect)
sql_str = str(dialect).rstrip()
if sql_str:
print(sql_str + ';')
engine = create_mock_engine('postgresql://', dump)
SQLModel.metadata.create_all(bind=engine, checkfirst=False)
Description
When executing the above example code, the output shows that only the enum from FlatModel is correctly created, while the enum from the inherited class is not:
CREATE TYPE myenum AS ENUM ('A', 'B');
# There should be a TYPE def for myenum2, but isn't
CREATE TABLE flatmodel (
enum_field myenum,
id UUID NOT NULL,
PRIMARY KEY (id)
);
CREATE INDEX ix_flatmodel_id ON flatmodel (id);
CREATE TABLE inheritmodel (
enum_field myenum2,
id UUID NOT NULL,
PRIMARY KEY (id)
);
CREATE INDEX ix_inheritmodel_id ON inheritmodel (id);
Operating System
macOS
Operating System Details
No response
SQLModel Version
0.0.4
Python Version
3.9.7
Additional Context
No response