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를 재부팅하거나 해당 어플리케이션 폴더를 다시 열면 위의 오류가 사라져 있음을 볼 수 있다.