SQLModel

일반적으로 모든 모델에 공통된 필드를 편하게 넣기 위해서 BaseModel을 만들어 사용하곤 한다. 필자의 경우엔 FastAPI의 SQLModel에서 Base 모델을 만들고 싶어서 아래와 같이 만들었다. import re from sqlalchemy.ext.declarative import declared_attr from sqlmodel import SQLModel def camel_to_snake_case(name): # 정규 표현식을 사용하여 CamelCase를 snake_case로 변환합니다. name = re.sub("([a-z0-9])([A-Z])", r"\1_\2", name) return name.lower() class Base(SQLModel): # id: int = Field(prim..
파이썬의 객체는 _로 시작하는 속성을 가리는 은닉화의 속성을 가지고 있다. 그렇기 때문에 SQLModel에서도 _를 포함한 필드를 가져올 수 없는 이슈가 있다. 필자는 작업 중에 사용한 테이블에 _TIMESTAMP 와 같은 필드가 있어 이런 이슈를 직면하게 되었다. 이 이슈를 해결하기 위해 디렉터분께 질문을 드렸고, SQLModel은 기존의 SQLAlchemy의 컬럼을 사용할 수 있는 sa_column이란 프로퍼티를 찾아주셨다. sa_column은 SQLAlchemy Column의 줄임말이다. 아래는 일반적인 Post 모델이다. class Post(Base, table=True): id: int = Field(primary_key=True, index=True) name: str = Field() aut..
SQLModel에서 모든 field를 가져올 때 model.__fields__.keys() 위의 메소드를 많이 사용하곤 한다. 하지만 여기서 키를 못 가져오는 경우가 있는데 필드 이름 앞에 _가 붙은 경우다. 필자의 경우에는 타임스탬프 필드를 가져와야 했는데 필드 이름이 _TIMESTAMP로 되어 있어서 해당 필드를 가져올 수 없었다. 그럴 때 사용할 수 있는 파이썬의 내장 함수가 있다. 필자의 SQLModel 코드는 아래와 같다. from datetime import datetime from typing import Optional from sqlmodel import SQLModel class TestModel(SQLModel): id: Optional[int] author: Optional[str]..
Say simple
'SQLModel' 태그의 글 목록