import pyodbc, os, csv # 현재 스크립트가 포함된 폴더 지정 path_present = os.path.dirname(os.path.abspath(__file__)) # 접속정보 DSNNAME = "Tibero6" DBUSER = "snits" DBPWD = "snitsUIspxmworks#PW" cnxn = pyodbc.connect(f'DSN={DSNNAME};UID={DBUSER};PWD={DBPWD};charset=utf-8') cursor = cnxn.cursor() # 스키마 및 테이블명 schema = 'SNMS' tables = ['TC_IF_TOD_DAY_PLAN', # TOD 일계획 현황# 'TC_IF_TOD_HOLIDAY_PLAN', # TOD 휴일 계획# 'TC_IF_TOD_RED_YELLO', # TOD 적색 및 황색 시간# 'TC_IF_TOD_WEEK_PLAN', # TOD 주 계획# # 'TL_IF_SIGL', # 신호 운영 이력 # 'TL_IF_SIGL_CYCL', # 신호 운영 주기 이력# 'TM_FA_CRSRD', # 교차로 마스터# 'TN_IF_SIGL_FLOW', # 신호 현시 별 이동류 방향# ] # 테이블 불러오는 함수 def fetch_table(table, condition=""): try: query = f"SELECT * FROM {schema}.{table} {condition}" cursor.execute(query) csv_file_path = os.path.join(path_present, f"{table}.csv") with open(csv_file_path, 'w', newline='', encoding='utf-8-sig') as csvfile: csv_writer = csv.writer(csvfile) columns = [column[0] for column in cursor.description] csv_writer.writerow(columns) for row in cursor.fetchall(): csv_writer.writerow(row) except Exception as e: print(f"오류 발생: {e}") # 신호이력을 제외한 테이블들 불러오기 for table in tables: fetch_table(table) # 초단위 신호이력 불러오기 fetch_table('TL_IF_SIGL', condition="WHERE TRUNC(PHASE_DT) = TO_DATE('2024-07-31', 'YYYY-MM-DD') AND CRSRD_ID IN (436, 437, 438, 442, 443, 444, 455, 456, 457, 458)") # 주기단위 신호이력 불러오기 fetch_table('TL_IF_SIGL_CYCL', condition="WHERE TRUNC(OCRN_DT) = TO_DATE('2024-07-31', 'YYYY-MM-DD') AND CRSRD_ID IN (436, 437, 438, 442, 443, 444, 455, 456, 457, 458)")