[sql] SQL 데이터베이스 로그아웃 후 자동 접속 재시도 방법

SQL 데이터베이스에 연결된 프로그램에서 로그아웃되거나 연결이 끊어졌을 때, 자동으로 다시 연결하는 방법을 알아보겠습니다.

보통 데이터베이스 연결 라이브러리를 사용하여 프로그램과 데이터베이스를 연결하고, 연결이 끊어지면 예외가 발생합니다. 이 예외를 처리하여 다시 연결을 시도할 수 있습니다. 별도의 라이브러리를 사용하지 않고, 일반적인 SQL 문법을 사용하여 재접속을 구현할 수 있습니다.

1. 연결을 유지하는 함수 작성하기

다시 연결될 때까지 일정한 시간 간격으로 연결을 시도하는 함수를 작성합니다.

import time
import mysql.connector

def connect_database():
    connected = False
    while not connected:
        try:
            # 데이터베이스 연결
            conn = mysql.connector.connect(user='username', password='password',
                                           host='localhost',
                                           database='dbname')
            connected = True
            print("데이터베이스에 연결되었습니다.")
        except mysql.connector.Error as err:
            print("연결 실패:", err)
            time.sleep(5)  # 5초 간격으로 재시도

    return conn

위의 코드는 MySQL 데이터베이스에 연결하는 함수 connect_database()을 작성한 예입니다. 연결에 실패하면 5초 간격으로 재시도하게 됩니다.

2. 연결 유지하기

프로그램에서 데이터베이스와 연결된 상태를 유지하기 위해 connect_database() 함수를 호출하고 결과를 변수에 저장합니다.

conn = connect_database()

위의 코드를 프로그램 시작 부분에 추가하여 연결을 유지합니다.

3. 연결이 끊어졌을 때 재시도하기

만약 데이터베이스 연결이 끊어진 경우, 예외가 발생하게 됩니다. 이를 처리하여 connect_database() 함수를 호출하여 다시 연결을 시도합니다.

while True:
    try:
        # 데이터베이스 작업 수행
        # ...

    except mysql.connector.Error as err:
        print("데이터베이스 연결이 끊어졌습니다:", err)
        conn = connect_database()

위의 코드는 데이터베이스 작업 수행 부분에서 예외가 발생할 경우, connect_database() 함수를 호출하여 다시 연결을 시도하는 예입니다.

참고 자료