티스토리 뷰
반응형
🚀 들어가며...
- 달력 기능 개발도중 Front에서 일수 표기 O,X를 update하려고하는 컬럼만 받아서 따로 처리하려고 하던 도중, Join과 Split에 대해 더 깊게 공부하게 되었고, 또한 set 집합자료형과 연계하여 쿼리문을 만들어 보았습니다.
💌 소스코드
def make_update_calender_query(data, data_1):
update_columns = {'str_5', 'str_6', 'str_7', 'str_8', 'str_9', 'str_10', 'str_11', 'str_12', 'str_13',
'str_14', 'str_15', 'str_16', 'str_17', 'str_18', 'str_19', 'str_20', 'str_21', 'str_22',
'str_23', 'str_24', 'str_25', 'str_26', 'str_27', 'str_28', 'str_29', 'str_30', 'str_31',
'str_32', 'str_33', 'str_34', 'str_35'} # set - unique
json_data_bfo = json.loads(data.get('ym_calender_1'))
json_data = json.loads(data.get('ym_calender'))
data.update(json_data)
data_1.update(json_data_bfo)
sub_query = ", ".join(["{0} = %({0})s".format(col) for col in list(json_data.keys() & update_columns)])
sub_query_1 = ", ".join(["{0} = %({0})s".format(col) for col in list(json_data_bfo.keys() & update_columns)])
# 전월 당월 키값 중복으로 인한 분기처리
query = """
UPDATE FTW_ETCPAYSUB_MAT_1_4
SET {sub_query}
WHERE STR_1 = %(cd_etemp)s AND STR_3 = %(ym_pay)s AND YM_INSA = %(ym_insa)s;
""".format(sub_query=sub_query)
query_1 = """
UPDATE FTW_ETCPAYSUB_MAT_1_4
SET {sub_query_1}
WHERE STR_1 = %(cd_etemp)s AND STR_3 = %(ym_rvrs_1)s AND YM_INSA = %(ym_insa)s;
""".format(sub_query_1=sub_query_1)
return query_1, query
📑 내용
- Join 함수는 리스트를 특정 구분자를 포함해 문자열로 변환해 주는 함수이고,
Split함수는 문자열을 특정 구분자를 기준으로 나누어 리스트로 변환해 주는 함수입니다. - Set 자료형은 unique하다는 특성을 가지고, 교집합, 합집합, 차집합을 이용할수 있다는 특성을 가지고 있어서 Front에서 넘어온 파라미터와 기존에 제가 선언해둔 1일~31일 변수를 기준으로 서로 일치하는 변수명을 뽑아서 서브쿼리를 만들어주었습니다.
🙋🏻♂️ 후기
Join함수와 Split함수는 앞으로도 엄청 자주 이용할것 같고, 중복이 없어야 하는 상황이면 set 자료형 특성을 이용하여 쉽게 데이터를 조작할수 있을것 같습니다!
아주 Python 스러운 코드였군!
🔗 참고한 글
https://ourcstory.tistory.com/46
반응형
'Python' 카테고리의 다른 글
[python] 언더스코어(_, __) 에 대해 알아보자! (0) | 2022.06.27 |
---|---|
[python] list 정렬시 특징 정리 (0) | 2022.05.24 |
[python] mutable, immutable 그리고 복사 (0) | 2022.05.23 |
[Python] 파이썬에서 json모듈 다루는 방법 (0) | 2022.05.12 |
[Python] 클래스형 vs 함수형 둘 중에 뭐로 개발하지?? (0) | 2022.05.11 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- docker
- lv2
- union-find
- MVT
- SQL
- container
- list
- react
- Python
- JS
- Algorithm
- lv1
- data formatting
- django
- generator expression
- static files
- 탐욕법
- Linux
- PostgreSQL
- This
- uSWGI
- Master & Slave
- JavaScript
- Default export
- Named export
- django ORM
- programmers
- Greedy Algorithm
- db
- ORM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함