더북(TheBook)

5.2.5 연결 객체 종료: with

지금까지 SQLite 데이터베이스를 사용하는 방법을 알아보았는데, 프로젝트 진행에 사용하지 않아서 다루지 않은 내용도 많습니다. 하지만 나중에 규모가 크고 협업이 필요한 애플리케이션을 만들 때는 데이터베이스를 사용한 후 연결을 종료하는 방법도 알아야 합니다.

데이터베이스를 사용한 후 종료하지 않으면 컴퓨터 자원을 불필요하게 소모하는 메모리 누수가 발생하여 프로그램에 문제가 생길 수 있기 때문입니다. 종료하는 코드는 다음과 같이 conn 객체에 close 함수를 사용합니다.

conn.close()

하지만 이렇게 사용한 후 매번 close 함수를 호출하는 것은 귀찮은 일일 수 있으므로, 다음과 같이 연결 코드 앞에 with 문을 사용하면 자동으로 conn.close()가 수행되도록 할 수 있습니다. with를 사용하면 얻는 또 하나의 장점은 isolation_level=None을 넣지 않아도 자동으로 커밋까지 수행하는 것입니다.

with sqlite3.connect('universe_price.db') as conn:
     cur = conn.cursor() ------ with 문 아래 블록은 들여쓰기 합니다.

코드를 이렇게 작성하면 연결 이후에 자동으로 연결을 끊기 때문에 일일이 close 함수를 호출하지 않아도 됩니다. 물론 withconn.close()를 사용하지 않는다고 해서 소규모 프로그램에서 반드시 문제가 생긴다고 할 수는 없습니다. 혹시 모를 위험에 대비하거나 나중에 더 큰 프로젝트를 진행하기 전 습관을 들인다는 마음으로 앞으로 데이터베이스 연결을 수행할 때는 with 문을 사용하겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.