안녕하세요. 각 각 접속정보 테이블을 조회해서 순차적으로 해당 디비에 접속을 해서 update대상 테이블 및 컬럼 업데이트 쿼리 추출 후 순차적으로 update하는
파이썬 코드를 작성하였는데요.
첨부한 캡쳐 화면 처럼 한디비에 먼저 접속해서 테이블 리스트를 순차적으로 update하는데 error 발생 시 update가 멈추고 다음 디비로 접속합니다.
제가 원한건 update 에러발생해도 로그만 찍고 다음 테이블을 update 이어서 진행하는건데 pass를 어디다 넣어야할지 모르겠습니다. ㅠㅠ
도와주세여 ㅠㅠ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 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 |