본문 바로가기
Python

[FastAPI] SQLModel 에서 MySQL 의 Json 컬럼 사용방법

by bryan.oh 2023. 9. 18.
반응형

 

sqlmodel 의 Field, SQLModel, JSON, Column 를 imort 

from sqlmodel import Field, SQLModel, JSON, Column

 

friends_id_list 와 같이 

python data type 은 dict

SQLModel Field 는 sa_column=Column(JSON) 으로.

class User(SQLModel, table=True):
    __tablename__ = 'user'
    user_id: str = Field(primary_key=True)
    friends_id_list: dict = Field(sa_column=Column(JSON))
    reg_date: Optional[datetime] = Field(default_factory=datetime.now)

    class Config:
        arbitrary_types_allowed = True

 

아래와 같이 입력!

user = User()
user.user_id = "100"
user.friends_id_list = ["111","222","333","444"]

with Session(self.engine) as session:
    session.add(user)
    session.commit()

 

추가

저장되는 데이터 형식에 따라 SQLModel 의 field type 을 맞춰야 합니다.

특히 조회할 때 리턴을 response_model 로 했다면,  validation 오류가 발생합니다.

mysql 의 json 컬럼에 저장되는 데이터가 list 일 때와 dict 일 때 아래와 같이 타입을 잘 작성해야합니다.

# [1, 2, 3, 4] 
friends_id_list: list = Field(sa_column=Column(JSON))


# {"name": "bryan", "greet": "hello"}
friends_id_list: dict = Field(sa_column=Column(JSON))

 

728x90
반응형

댓글