[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()
함수를 호출하여 다시 연결을 시도하는 예입니다.