안녕하세요. 각 각 접속정보 테이블을 조회해서 순차적으로 해당 디비에 접속을 해서 update대상 테이블 및 컬럼 업데이트 쿼리 추출 후 순차적으로 update하는
파이썬 코드를 작성하였는데요.
첨부한 캡쳐 화면 처럼 한디비에 먼저 접속해서 테이블 리스트를 순차적으로 update하는데 error 발생 시 update가 멈추고 다음 디비로 접속합니다.
제가 원한건 update 에러발생해도 로그만 찍고 다음 테이블을 update 이어서 진행하는건데 pass를 어디다 넣어야할지 모르겠습니다. ㅠㅠ
도와주세여 ㅠㅠ
for row in rows_instance : my_conn = pymysql.connect(host=row['endpoint'], user=row['user'], password=row['pwd'], db=row['db'], charset='utf8', port=row['port'], connect_timeout=5) my_curs = my_conn.cursor() db_conn = {'instance_id': row['instance_id'], 'conn': my_conn, 'curs': my_curs, 'use_yn': row['use_yn']} db_conns.append(db_conn) for conn in db_conns : log.info('Start Collecting ::: Instance ID : ' + conn['instance_id'] ) try : conn['curs'].execute(sql_updt_qrylist) rows = conn['curs'].fetchall() # rows에 update값들을 쭉 저장 rows = list(rows) # sql_updt_qrylist 실행하는 부분임 for row in rows : row = list(row) query = row[0] conn['curs'].execute(query) query = row[1] conn['curs'].execute(query) query = row[2] conn['curs'].execute(query) #row = ''.join(row) # conn['curs'] 함으로써 모듈DB에 접속하여 update를 수행할 수 있음 #conn['curs'].execute(row[0],row[1],row[2]) log.info(rows) conn['conn'].commit() my_conn_c.commit() except Exception as exw : log.error("Occured Exception exw ::: \nex ::: %s \nmsg : %s \nLast Executed Select SQL ::: %s \nLast Executed Insert SQL ::: %s",str(exw), str(sys.exc_info()[0]), conn['curs']._last_executed, my_curs_c._last_executed) pass try: my_conn_c.commit() conn['conn'].commit() except Exception as ex3 : pass pass log.info('End Collecting ::: Instance ID : ' + conn['instance_id'] ) except Exception as ex : log.error("Occured Exception ex ::: ex : %s msg : %s Traceback : %s ",str(ex), str(sys.exc_info()[0]), traceback.format_exc() ) finally : try: my_conn_c.close() for db_conn in db_conns : try : db_conn['conn'].close() except Exception as exff: pass except Exception as exf: pass