From: Jakob Jul Elben Date: Sat, 27 Aug 2022 20:13:32 +0000 (+0200) Subject: ✨ Raise an exception when using a Pydantic field type with no matching SQLAlchemy... X-Git-Tag: 0.0.7~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc4dc42ec5732e0467ae6f8df449998462ef242e;p=thirdparty%2Ffastapi%2Fsqlmodel.git ✨ Raise an exception when using a Pydantic field type with no matching SQLAlchemy type (#18) Co-authored-by: Sebastián Ramírez --- diff --git a/sqlmodel/main.py b/sqlmodel/main.py index 63c6dcbe..9efdafec 100644 --- a/sqlmodel/main.py +++ b/sqlmodel/main.py @@ -415,6 +415,7 @@ def get_sqlachemy_type(field: ModelField) -> Any: return AutoString if issubclass(field.type_, uuid.UUID): return GUID + raise ValueError(f"The field {field.name} has no matching SQLAlchemy type") def get_column_from_field(field: ModelField) -> Column: # type: ignore diff --git a/tests/test_missing_type.py b/tests/test_missing_type.py new file mode 100644 index 00000000..2185fa43 --- /dev/null +++ b/tests/test_missing_type.py @@ -0,0 +1,21 @@ +from typing import Optional + +import pytest +from sqlmodel import Field, SQLModel + + +def test_missing_sql_type(): + class CustomType: + @classmethod + def __get_validators__(cls): + yield cls.validate + + @classmethod + def validate(cls, v): + return v + + with pytest.raises(ValueError): + + class Item(SQLModel, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + item: CustomType