본문 바로가기

개발/Python & Flask

pymysql exception error (예외 처리 정리 및 해석!)

파마SQL ㅎㅎ

pymysql.err 객체

서비스 유지 측면에서 에러발생시 해당 에러를 로그에 출력하기위해

try except 로 잘 감싸야한다.

 

except 후에 pymysql.err.InternalError 와 같이 점 뒤에 각종 에러를 호출할 수 있다.

try:
	#some code...

except pymysql.err.InternalError as e:
	code, msg = e.args

	#이렇게 첫번째 아규먼트에 에러코드, 둘째에 에러메시지가 담겨있다.

와 같은 형태로 처리된다.


에러 종류

  • My SQLError, MySQL 작동에러
  • InterfaceError, 데이터베이스 자체 말고 인터페이스 문제, eg.) interface 할 때 컬럼 개수와 value 개수가 안맞음.
  • DatabaseError, 데이터베이스에 문제가 있을 때
  • DataError, 나누기 0, 데이터 범위 벗어남 등 에러
  • OperationalError, 데이터소스 이름 없음, 트랜젝션 실행불가, 메모리 할당 에러, 연결 끊김 등 에러
  • IntegrityError, 커서(cursor)① 유효하지 않음, 트랜젝션 안맞음 등 에러
  • ProgrammingError, 테이블 찾을 수 없음, 이미 존재함, SQL 문법에러, 파라미터 갯수 틀림 등
  • NotSupportedError... 롤백을 "트랜젝션이 아니거나 끝난 트랜젝션에 요구"②하는 등 에러가 있다.

수차례 검색을 해본 결과로는
OperationalError, Integrity Error, InterfaceError 이 세 가지를 많이
사용하는 것으로 보여진다.

 

내가 수준이 낮아서 그런건지 모르겠지만...

pymysql.err 는 과하게 세분화 시킨 것이 아닌가 라는 생각이 들지만...

에러처리 같은 디테일이 소프트웨어의 품질을 결정하는 중요한 요소이다!

제 기능만 하는 코드는 대학생 과제에 불과하다


① 커서(cursor) : pymysql 라이브러리를 통해 sql문을 호출하고, 결과 값을 담는 컨테이너 옵젝트.
                      서버와 디비가 상호작용할 때 커서부터 생성해야한다.

② : mysql에서 "롤백" 의 개념은, 트랜젝션이 실행된 후 결과에 이상이 있을 때 트랜젝션 시행 이전 상태로 돌려놓는 것

                      을 말하는데, 트랜젝션이 아닌 일반 sql구문이 실행됐거나, 이미 실행완료된 트랜젝션에 롤백을 요구할

                      수 없으니 에러가 나는 상황을 말한다.

 

 

 

 

도움이 되셨다면 ♡공감 ↓광고클릭으로 저를 응원해주세요!!! :D

 

반응형