본문 바로가기

PYTHON

[python3] spring SQL log 파라미터 치환해서 추출하기.

728x90
반응형

spring의 mybatis 로그에서

? 부분에 파라미터를 넣어서 출력하고 싶다!! 

 

why?? 

파라미터 개수가 많을 때 ? 찾아서 입력하기 귀찮음.. 한 번 간단한 파이썬 실행파일을 만들어보자.

 

메모장에서 만들어본다.

1. 메모장을 켜고,

2. 파이썬으로 알고리즘을 만든다

3. ctrl+s 로 저장할 때 파일 이름은 파일명.py로 하고 파일 형식은 "모든 파일"로 한다.

4. 끝!

 

** 참고로 여기서 사용할 문자열 조작 관련 함수는 

    split(), find(), replace() 이다.

 

sqlParsing.py 

#SELECT * FROM TBL_ADDR_BOOK WHERE MBR_ID = ? AND ADDR_BOOK_GRP_IDX = ? ORDER BY NM ASC LIMIT ?, ?
#Parameters: 2021cop(String), 2(String), 0(Integer), 5(Integer)

import sys

i, j = 0
str = sys.argv[1]
parm = sys.argv[2]
params = sys.argv[2].split(', ')
newParams = []

#print("str : " + str)
#print("parm : " + parm)
#print(params)

for i in params :
    idx = i.find('(')
    if 'String' in i :
        i = i[0:idx]
        i = "'" + i + "'"
    else :
        i = i[0:idx]
        #print(i) newParams.append(i)
       
str = str.replace('?', '%s')

for i in newParams :
    str = str.replace('%s', i, 1)

print('========result==========')
print(str)

 

 

편한 위치에 sqlParsing.py 파일을 위치시키고,

cmd 에서 해당 위치에 가서

 

sqlParsing.py "sql문" "파라미터" 입력 후 enter 

 

 

ex) 

E:\> sqlParsing.py "SELECT * FROM TBL_ADDR_BOOK WHERE MBR_ID = ? AND ADDR_BOOK_GRP_IDX = ? ORDER BY NM ASC LIMIT ?, ?" "2021cop(String), (String), 0(Integer), 5(Integer)"

 

출력 결과

 

728x90
반응형