Python에서 데이터베이스 연결 끊는 방법
Python에서 데이터베이스 작업을 마친 후에는 반드시 연결을 종료해야 합니다. 연결을 해제하려면 close() 메서드를 사용하면 됩니다.
db.close()
close() 호출 시 트랜잭션 처리 방식
사용자가 close() 메서드를 호출하여 데이터베이스 연결을 닫으면, 아직 완료되지 않은 미처리 트랜잭션(outstanding transactions)은 데이터베이스에 의해 자동으로 롤백(rollback)됩니다.
명시적인 commit 또는 rollback 권장
다만, 데이터베이스의 하위 수준(low-level) 구현 세부 사항에 의존하는 것보다는, 애플리케이션 코드에서 commit() 또는 rollback()을 명시적으로 호출하는 것이 훨씬 안전하고 바람직합니다.
그 이유는 다음과 같습니다.
- 예측 가능성: 각 DBMS(Oracle, MySQL, PostgreSQL 등)마다 연결 종료 시 트랜잭션을 처리하는 방식이 다를 수 있습니다.
- 코드 이식성: 명시적인 트랜잭션 제어는 다른 데이터베이스로 전환할 때도 동일하게 동작합니다.
- 데이터 무결성: 의도하지 않은 롤백으로 인한 데이터 손실을 방지할 수 있습니다.
권장 코드 패턴
try:
# 데이터베이스 작업 수행
cursor.execute(query)
db.commit() # 성공 시 변경 사항 확정
except Exception as e:
db.rollback() # 오류 발생 시 변경 사항 되돌리기
finally:
db.close() # 항상 연결 종료이처럼 try-except-finally 구조를 활용하면 예외가 발생하더라도 트랜잭션이 적절히 처리되고, 연결도 확실하게 종료되므로 리소스 누수를 예방할 수 있습니다.