본문 바로가기

Server/Python

[Python] Python 에 대해 주절주절

이 글은 Python 으로 코딩을 진행하며 드는 의문이나 오류 기타등등 정리되지 않은 의식의 흐름들을 메모하는 글임을 명시한다.

 

최근 Python 으로 작업을 조금 하고 있는데, AWS Lambda 와 연동해서 사용하는 경우도 있고 아무튼 많은 어려움에 봉착 중이다.

지금은 Python DB 처리와 관련해 회의와 고충을 겪는 중 이다.

왜 있는 쿼리빌더 모듈을 두고 직접 만들겠다고 설쳤는지 모르겠다. 뭐 나중의 거름이 될지도 모르겠으나 일단은 회의감이다.

pymysql 로 작업을 하고 있는데, 파이썬도 기본적으로 auto commit 인 듯 하다.

기본기가 부족해서 connection leak 라던지 pool 이라던지의 개념이 부족해 혼돈상태. 일단 자원관리를 위해 잘 열고 닫아야 한다는 건 알겠는데, 그럼 transaction 처리는 어떻게 해야하는건지 모르겠다.

try-finally 문 안에서 cursor 를 사용하면 auto commit 이 안되는건가? try 문 안에서는 꼭 commit 처리를 해주는 것 같은데, 그럼 try 문을 사용하지 않으면 그냥 auto commit 이 되나? try 문에서 commit 처리를 하지 않고 외부의 try 에서 commit 처리를 해도 내부 try 에서 처리한 execute가 commit 되는건가.

Python 경험자의 말로는 그렇게 DB 처리에서 sql 문을 처리하고 마지막에 commit 을 쳐준다고 했는데 ( 서로 다른 위치에서 connection 을 열어서) 그.. life cycle 같은걸 좀 알면 좋겠다는 생각을 했다.

그러고 보니 우리가 쓰는 DB가 뭐지 mariaDB? innoDB? 쓰는건 MySQL 인데 그건 SQL 문 구문? 언어? 형식 인 것 같고 DB는 뭘 쓰는지 무슨 차이가 있는지 모르겠네. 흠..

 

일단은 그래서 우선 작업해둔 코드에서 commit 을 다 빼고 controller 에서 따로 DB connection 을 열어서 transaction 처리를 해줘야 한다는거임. 

다행인건 이게 기한내에 끝내야 하는 프로젝트가 아니라 기존에 있던 프로젝트를 Python 으로 만들면서 익히는 의미가 크다고 해서 좀 안심했다. 아니었으면 진짜 답도 없었을 것 같음.

 

일단 주절주절들은 여기에 쭉 쓰려고 한다. 개인적으로 작업하면서 이것저것 메모해두려고 만든 티스토리인데 항상 정신없고 그런걸 다 쓸 시간이 없거나 귀찮거나 하다보니 똑같은짓을 또 하고 또 하고의 반복임.

포스팅도 진짜 부지런해야 쓸 수 있는거다.. 나는 일단 뇌에 있는거 쏟아내기 바빠서 걍 주절주절인데 글 깔금하게 쓰는 사람들 리스펙~