db에 넣을때는
SRID=4326;POINT(137.56276780042197 126.92813920924125)
ex)
location='SRID=4326;POINT(137.56276780042197 126.92813920924125)'
db에 있는 Point type은 불러오면 에러를 뱉는다 그러므로 처리를해줘야한다
원인은 WKBElement 이놈 때문이다
1. 이방식으로 하면 response_model이 작동을 안함
stmt = select(Table).where(Table.id == trable_id)
travel = session.exec(stmt).one_or_none()
travel = jsonable_encoder(travel, custom_encoder={
WKBElement: lambda
location: f"{to_shape(location).x},{to_shape(location).y}"})
2.이방식으로 하면 잘받아온다 하지만 복잡한 구조로된 모델일경우 이마저 작동을 안한다
from geoalchemy2.shape import to_shape
class ModelRead(ModelBase):
id: int
create_at: datetime.datetime
updated_at: datetime.datetime
user_id: int
location:str # point 받아오는 변수명
@validator('location', pre=True, allow_reuse=True, whole=True, always=True)
def correct_geom_format(cls, v):
if not isinstance(v, WKBElement):
raise ValueError('must be a valid WKBE element')
return f"{to_shape(v).x},{to_shape(v).y}"
point타입이 위도,경도를 모두 포함하여 개꿀인줄 알았으나 쓰면 골치가 많이아프다..그래서 다시 나눠서쓴다..
참고:
반응형
'python' 카테고리의 다른 글
certificate verify failed: unable to get local issuer certificate (_ssl.c:997) (0) | 2023.04.29 |
---|---|
qr코드 대량 생성 및 하나의 이미지로 만들기 (0) | 2022.12.19 |