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타입이 위도,경도를 모두 포함하여 개꿀인줄 알았으나 쓰면 골치가 많이아프다..그래서 다시 나눠서쓴다..

 

 

 

 

 

참고:

https://stackoverflow.com/questions/66044397/how-to-create-a-sqlalchemy-class-attribute-from-a-calculated-field-in-sql-query

반응형

이미지 만들고 허브에 올리고 다운받아서 실행했는데 

standard_init_linux.go:230: exec user process caused: exec format error

이런 에러가 생겼다면 

 

이미지를만든 환경과 실행하는 환경이 달라서 일수있다 

나는 m1을 쓰는데 m1은 arm64를 기본으로 토커이미지를 생성함 

내가 실행한 환경은 nas인데 나스는 amd64환경이였다. 

 

 

ex)

m1이면 기본으로 arm64가 들어가있다고 보면된다

docker build --platform=linux/arm64 -t fastapi-test:0.0.1 . 

 

amd로 변경

docker build --platform=linux/amd64 -t fastapi-test:0.0.1 . 

 

참고:

https://stackoverflow.com/questions/42494853/standard-init-linux-go178-exec-user-process-caused-exec-format-error

반응형

'docker' 카테고리의 다른 글

docker image를 docker hub에 업로드하기  (0) 2022.09.09
docker file 작성 & 이미지 생성  (0) 2022.09.09
ubuntu error  (1) 2020.08.03
docker 설치하기  (0) 2018.11.18

docker hub 가입후 

docker desktop에서 로그인을 한 후 

docker hub에서 create repository 생성

 

 

fastapi로 만들겠다

 

 

 

아래와같이 생성되었다

 

 

나의 도커 images현황이다 fastapi-test를 올릴건데 docker hub의 이름과 맞춰줘야 하므로 이름을 바꿔주자

 

 

터미널에서 아래 명령어 실행

docker tag fastapi-test:0.0.1 thomas819/fastapi:0.0.1

 

fastapi-test:0.0.1 = 현재 만들어 놓은 image의 이름:tag

thomas819/fastapi:0.0.1 = docker hub의 이름과 내가 올리고자하는이름의 tag

 

아래와 같이 hub에서 생성된 이름과 동일한 이름이 더 생긴다 

 

이제 터미널에서 아래명령어를 실행하면 업로드가 된다

docker push thomas819/fastapi:0.0.1 

 

반응형

+ Recent posts