Error 6

Sqlalchemy 에서 joinedload 할 때, The unique() method must be ... 에러 해결방법

Sqlalchemy 로 ORM 영역에서 join 을 하려고 할 때 joinedload 를 자주 사용한다. 그런데 joinedload 방식은 복수의 ORM 객체를 불러올 때에 다음처럼 에러가 발생할 수 있다. sqlalchemy.exc.InvalidRequestError: The unique() method must be invoked on this Result, as it contains results that include joined eager loads against collections 결론부터 말하자면 메시지의 내용대로 unique() 를 추가하면 된다. 아래처럼 말이다. ... res = await session.execute(stmt) res.scalars().all() # X res.sca..

requests _ response 상태에 따라 raise를 할 수 있다?

외부 API로부터 받은 응답 값이 정상이 아니라면 우리는 응답이 잘못되었음을 어떻게 확인할 수 있을까? 매번 요청 때마다 응답의 상태 코드를 일일이 체크하고 핸들링해야 할까? python의 requests 라이브러리에서는 이러한 번거로움을 줄이기 위해 raise_for_status() 메서드가 있다. raise_for_status()는 응답의 상태 코드가 400 이상인 경우 HTTPError를 raise 한다. raise 를 통해 외부 모듈과의 통신상태를 확인하고 쉽게 핸들링을 할 수 있다. 사용법은 간단하다. requests 요청으로 응답받은 res 객체로부터 raise_for_status() 메서드를 호출하면 된다. url = "" res = requests.post(url) res.raise_for..

python _ traceback 에러 메시지 핸들링하기

traceback 이란? 파이썬으로 개발을 하다보면 traceback 이란 단어를 많이 접하게 된다. traceback은 역 추적 이란 뜻으로 해당 에러가 어디서부터 발생했는지 우리에게 알려준다. 예를들어 다음처럼 빈 dictionary에 “값 내놔” 라는 key를 호출하면, 해당 key가 없기 때문에 KeyError가 발생한다. dict = {} dict["값 내놔"] Traceback (most recent call last): File "example.py", line 2, in dict["값 내놔"] KeyError: '값 내놔' 위의 메시지로 보자면 KeyError가 line 2에서 발생했음을 알 수 있다. 이처럼 에러 메시지는 디버깅을 할 때 매우 유용하다. 하지만 에러가 언제 발생할지 우리는..

Tenacity _ 예외가 발생한 함수를 다시 실행하려면?

Tenacity 란? 보통 에러나 예외처리에 의해 런타임이 종료될 때가 있다. Tenacity는 런타임 종료없이 함수를 다시 실행시켜주는 Python 라이브러리이다. 사용법 1. Tenacity 설치 pip install tenacity 2. Tenacity 라이브러리 가져오기 및 함수 작성 import tenacity def throw_error(): print("running...") raise ValueError("Errors make me stronger") if __name__ == "__main__": throw_error() 이대로 스크립트를 실행해보면 우리가 의도한대로 에러가 발생하며 곧바로 스크립트가 종료된다. running... Traceback (most recent call last..

SQLAlchemy _ NotSupportedError(InvalidCachedStatementError) 에러 해결

AsyncSessionNotSupportedError, InvalidCachedStatementError 테스트 코드를 작성하는 중에 에러가 발생했다!! 에러 메시지는 다음과 같다. """ sqlalchemy.exc.NotSupportedError: (sqlalchemy.dialects.postgresql.asyncpg.InvalidCachedStatementError) : cached statement plan is invalid due to a database schema or configuration change (SQLAlchemy asyncpg dialect will now invalidate all \\ prepared caches in response to this exception) E [..

컬럼 속성 변경 후 alembic migration할 때 ‘None’ 생기는 현상

테이블 컬럼의 속성을 변경하고 alembic migration 할 때 version 파일에 None이 생기는 현상을 발견했습니다. 의도 일단 저는 stock 테이블에서 code와 name컬럼의 속성을 unique로 변경하고자 했습니다. # models.py class Stock(Base): __tablename__ = "stock" id = Column(Integer, primary_key=True, autoincrement=True) code = Column(String(50), unique=True) # unique=True 속성 추가 name = Column(String(50), unique=True) # unique=True 속성 추가 market = Column(ENUM("KOSPI", "KOS..