0%

SQLAlchemy ORM 사용 중 pylint 에러

SQLAlchemy 사용 중에 아래와 같은 에러의 해결책을 정리합니다.

1
Instance of 'scoped_session' has no 'commit' member pylint(no-member)

오류 설명

VS code를 사용하여 flask로 웹페이지를 만들던 중 문제가 생겼다.

데이터베이스를 연동하기 위해서 sqlalchemy ORM을 사용하는데 pylint가 세션 충돌을 막아주는 ‘scoped_session’을 인식하지 못하고 위의 오류만을 반복하였다.

(참고로 pylint는 코드의 오류를 검사하고 로직의 문제가 없는지 확인해주는 툴이며, VS code에 내장되어 있다.)

이 문제를 해결하기 위해 VS code의 Setting도 변경해보았지만 소용이 없었다.

한참 해결방안을 검색하다가 아래의 방법을 찾았고, 적용해보니 실제로 오류가 사라졌다.

한국어로 정리된 자료가 없는 것 같아서 글로 남긴다.

해결 방법

먼저 터미널을 켠 후 아래의 코드를 입력하여 pylint의 pylintrc을 생성한다.

1
pylint --generate-rcfile >.config/pylintrc

그 다음 새로 생성한 디렉토리에 들어간다.

1
cd .config/

그리고 에디터를 사용하여 pylintrc을 수정한다. 나의 경우 에디터 vim이 설치되어 있어서 그냥 사용하였다. 만약 에디터가 없어서 vim을 사용하려는 사람은 라이브러리를 먼저 다운로드 해야 한다. (참고로 리눅스 기반의 컴퓨터는 vim의 최소버전이 내장되어 있다.)

1
vim pylintrc

vim의 경우 i를 누르면 수정을 할 수 있는 INSERT 모드로 변경된다. 그 다음 아래의 코드를 ignored-classes 뒤에 붙여준다.

1
SQLObject,Registrant,scoped_session

그 후, esc를 눌러 수정에서 빠져나온 후 :write를 입력하여 수정된 내용을 저장한다. 그리고 :q를 다시 입력하여 해당 파일에서 빠져나온다.

이제 VS code를 재부팅하거나 해당 어플리케이션 폴더를 다시 열면 위의 오류가 사라져 있음을 볼 수 있다.