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
반응형
'개발 > Python & Flask' 카테고리의 다른 글
pymysql 사용법, 간편한 축약 코드 예시! (0) | 2020.11.13 |
---|---|
Python 전역변수 다루기 (0) | 2020.11.13 |
logging에 필터추가하기! 초간단 예시 (0) | 2020.11.10 |
Flask Python Threading 쓰레딩에 대해 알아보잣 (0) | 2020.11.10 |
pymysql 사용법 및 초간단 예시! (0) | 2020.11.10 |