Programming

🔁 Python으로 MSSQL 반복 쿼리 실행 및 자동화 방법

quantoasis 2025. 3. 22. 16:59
반응형

Python을 활용하면 MSSQL 쿼리 실행을 반복하거나 예약 실행(자동화)할 수 있습니다. 이 글에서는 pyodbcschedule 라이브러리를 사용하여 반복 쿼리 및 자동화 작업을 구현하는 방법을 정리해봅니다. ✅


📌 1. Python에서 MSSQL 연결하기

MSSQL과 연결하려면 pyodbc를 사용합니다.

pip install pyodbc
import pyodbc

# MSSQL 연결 설정
conn = pyodbc.connect(
    'DRIVER={ODBC Driver 17 for SQL Server};'
    'SERVER=서버주소;'
    'DATABASE=데이터베이스명;'
    'UID=아이디;'
    'PWD=비밀번호'
)

cursor = conn.cursor()

✅ ODBC 드라이버가 없다면 Microsoft 공식 ODBC 드라이버를 설치하세요.


🔄 2. 쿼리 반복 실행 함수 만들기

예를 들어, 매 1분마다 데이터를 조회하려면 아래처럼 작성합니다.

def run_query():
    query = "SELECT COUNT(*) FROM Sales WHERE SaleDate = CONVERT(DATE, GETDATE())"
    cursor.execute(query)
    result = cursor.fetchone()
    print("오늘 판매 건수:", result[0])

⏰ 3. 일정 주기로 실행 (자동 반복)

schedule 라이브러리를 활용하면 특정 시간 간격으로 작업을 반복할 수 있습니다.

pip install schedule
import schedule
import time

# 1분마다 쿼리 실행
schedule.every(1).minutes.do(run_query)

while True:
    schedule.run_pending()
    time.sleep(1)

💡 기타 실행 옵션:

schedule.every().day.at("10:30").do(run_query)      # 매일 오전 10시 30분
schedule.every().hour.do(run_query)                 # 매 시간마다
schedule.every(5).seconds.do(run_query)             # 5초마다

📤 4. 실행 결과를 파일로 저장하기 (선택 사항)

from datetime import datetime

def run_query():
    query = "SELECT COUNT(*) FROM Sales WHERE SaleDate = CONVERT(DATE, GETDATE())"
    cursor.execute(query)
    result = cursor.fetchone()

    # 로그 파일에 저장
    with open("query_log.txt", "a") as f:
        f.write(f"{datetime.now()} - 오늘 판매 건수: {result[0]}\n")

🎯 5. 실전 팁 & 에러 방지

  • 쿼리 실행 중 예외 발생 시 자동 재시도 하도록 구성하는 것도 좋습니다.
  • 너무 짧은 간격으로 반복할 경우, DB에 부하가 될 수 있으니 주의하세요.
  • Windows 환경이라면 Task Scheduler, 리눅스 환경이라면 cron과 함께 사용해서 Python 스크립트를 주기적으로 실행할 수 있습니다.

✅ 마무리

Python과 pyodbc, schedule만으로도 쉽게 MSSQL 반복 쿼리 실행과 자동화가 가능합니다.
정기 리포트, 모니터링 시스템, 자동 백업 스크립트 등 다양한 곳에 활용해보세요! 🚀

반응형